thx /gogocode

GoGoCode is a transformer for JavaScript/Typescript/HTML based on AST but providing a more intuitive API.

★ 6,087⑂ 464👁 50⑃ 22● 244▤ 0
JavaScriptCreated 2021-03-03
6,087
stars
+0+-1+-6
464
forks
50
watchers
22
prs
244
issues
0
releases
–
discussions

README

GoGoCode 是什么?

English version of README

GoGoCode 是一个基于 AST 的 JavaScript/Typescript/HTML 代码转换工具,但相较于同类,它提供了更符合直觉的 API

-   一套类 Jquery 的 API 用来查找和处理 AST
-   一套和正则表达式接近的语法用来匹配和替换代码

来 GoGoCode.io 了解更多

 简介

让我们通过一个简单的例子来看看上述查找和修改代码的 API 是如何使用的

 需要转换的代码

javascript
const a = 1;
const b = 2;


 通过 GoGoCode 来编写转换代码

javascript
const $ = require('gogocode');
const script = $(source);
// 按照你的意图,用 $_$ 当通配符能匹配任意位置的 AST 节点
const aAssignment = script.find('const a = $_$');
// 获得我们匹配的 AST 节点的 value
const aValue = aAssignment.match?.[0]?.[0]?.value;
// 就像替换字符串一样去替换代码
// 但可以忽略空格、缩进或者换行的影响
script.replace('const b = $_$', const b = ${aValue});
// 把 ast 节点输出成字符串
const outCode = script.generate();


 转换后代码

javascript
const a = 1;
const b = 1;


在 Playground 尝试一下上面的 Demo

 相关项目

| 项目                  | 描述                                                       |
| --------------------- | ---------------------------------------------------------- |
| [gogocode-plugin-vue] | 通过这个 gogocode 插件可以把 vue2 语法的项目转换成 vue3 的 |
| [gogocode-cli]        | gogocode 的命令行工具                                      |
| [gogocode-playground] | 可以在浏览器里尝试 gogocode 转换                           |
| [gogocode-vscode]     | 在 vscode 中通过此插件用 gogocode 重构你的代码             |

[gogocode-plugin-vue]: https://github.com/thx/gogocode/tree/main/packages/gogocode-plugin-vue
[gogocode-cli]: https://github.com/thx/gogocode/tree/main/packages/gogocode-cli
[gogocode-playground]: https://play.gogocode.io
[gogocode-vscode]: https://marketplace.visualstudio.com/items?itemName=mmfe.vscode-gogocode

 支持

-   issues
-   钉钉群:34266233
-   QQ群:735216094

 开源协议

MIT

Snapshot: 2026-11-04T14:00:00Z · Data license Apache-2.0 · JSON