如何处理开源 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 注册表中发布它,请不要忘记包含构建文件以减少安装时间。
我正在开发一个用 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 注册表中发布它,请不要忘记包含构建文件以减少安装时间。