您可以通过如下方式为当前项目做出贡献:
- 优化代码结构
- 添加类型信息
- 同步terser仓库的代码
- 提出或修复BUG
- 补充文档
本项目从terser项目fork而来,目的是提供一个类型完备、更易维护的terser版本,并为将来的Rust-Terser版本做好铺垫。
因为原来的terser项目开发较早,代码结构与ES6标准、Typescript规范等相关较远,需要进行部分重构。
目前重构的主要方向,是将 lib/ast/index.ts 中的每个 AST_XXX 的类,迁移到相应的 lib/ast/xxx.ts 文件,注意不要引入循环依赖问题,每次重构之后,要在npm test
测试通过,才可以提交。
类型信息主要集中在 AST 相关类定义中,其它工具方法也有一部分。
在添加类型定义的时候,对于不确定的类型定义,可参考原terser.d.ts
文件中的类型定义,或AST相关类中的props
属性。但不允许直接引入terser.d.ts
文件中的内容,此文件后面会删除掉。
当前仓库从terser中fork出来之后,因代码结构变更较大,不能继续使用 git merge 的方式从terser
中同步代码。因此当terser中有一些bug fix的时候,本项目中同步不到。
如果能手动同步下terser中的最新改动,并更新相应的测试用例,也是极好的。
此工程目前还处于开发阶段,但是因为有terser的测试用例在,所以也可认为是稳定可靠的。如果有发现bug的话会第一时间解决。欢迎随时提问题。
关于如何使用本工具,如何从terser迁移,相关文档还不存在,欢迎补充。
本项目中使用了如下方面的规范:
- 为保证质量可靠,在重构、添加类型阶段,不允许修改 test 目录中的文件
- Commit Message需要符合规范。当前使用的规范是 '@commitlint/config-conventional`
- 代码格式需要符合规范,规范参考
.eslintrc
文件 - 每次提交之前,必须保证 npm test 测试通过