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



我正在开发一个用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任务的情况下发送pull请求,则/src/lib中的文件将不同步
我的问题是,在GitHub项目中处理这些构建任务的最佳方式是什么。我已经研究了travis,它已经在为我做测试了,但我不确定travis是否应该或可以将代码推送到repo。毕竟,最好不要提交构建文件,因为它们无论如何都可以从源代码中计算出来?

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

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

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

如果你把这个东西添加到你的回购中,你的消费者将在安装过程中动态构建模块。此外,如果您要在NPM注册表中发布此文件,请不要忘记包含已构建的文件以减少安装时间。

最新更新