如何处理开源 GitHub 存储库中的构建任务?

How to handle build tasks in an open source GitHub repository?

我正在开发一个用 Javascript ES6 编写的开源项目。我使用 babel 将其转换为 ES5。这样我就有了这样的文件夹结构:

/project
  /src   *raw ES6 files*
    handler.es6.js
    app.es6.js
  /lib   *transpiled files by babel*
    handler.js
    app.js
  /dist  *combined an minified files, ready to use*
    project.min.js

我使用 grunt 来编译和缩小 js 文件。 唯一可以手动更改的文件位于 /src 中。其他文件是自动生成的。因此,如果用户对 app.es6.js 进行更改并在没有 运行 grunt 任务的情况下发送拉取请求,则 /src/ 中的文件lib 将不同步。
我的问题是,在已经研究过 travis 的 GitHub project.I 中处理此构建任务的最佳方法是什么,它已经在为我做测试,但我不确定 travis 是否应该或可以将代码推送到回购协议。毕竟最好不要提交构建文件,因为它们无论如何都可以从源代码中计算出来?

首先,在版本控制下存储转译代码根本不是一个好主意。

看看history项目中是怎么解决的:https://github.com/rackt/history/blob/master/npm-scripts/postinstall.js

他们有一个用于 NPM 的 postinstall 脚本,用于检查模块是否尚未构建并构建它。

如果您将这个东西添加到您的存储库中,您的消费者将在安装过程中即时构建模块。此外,如果您打算在 NPM 注册表中发布它,请不要忘记包含构建文件以减少安装时间。