Skip to content

Latest commit

 

History

History
48 lines (28 loc) · 2.13 KB

CONTRIBUTING.md

File metadata and controls

48 lines (28 loc) · 2.13 KB

贡献指南

您可以通过如下方式为当前项目做出贡献:

  • 优化代码结构
  • 添加类型信息
  • 同步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仓库的代码

当前仓库从terser中fork出来之后,因代码结构变更较大,不能继续使用 git merge 的方式从terser中同步代码。因此当terser中有一些bug fix的时候,本项目中同步不到。

如果能手动同步下terser中的最新改动,并更新相应的测试用例,也是极好的。

提出或修复BUG

此工程目前还处于开发阶段,但是因为有terser的测试用例在,所以也可认为是稳定可靠的。如果有发现bug的话会第一时间解决。欢迎随时提问题。

补充文档

关于如何使用本工具,如何从terser迁移,相关文档还不存在,欢迎补充。

相关规范

本项目中使用了如下方面的规范:

  • 为保证质量可靠,在重构、添加类型阶段,不允许修改 test 目录中的文件
  • Commit Message需要符合规范。当前使用的规范是 '@commitlint/config-conventional`
  • 代码格式需要符合规范,规范参考 .eslintrc 文件
  • 每次提交之前,必须保证 npm test 测试通过