我正在开发一个用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 中的文件将不在同步。
我的问题是,在GitHub项目中处理这个构建任务的最佳方法是什么。我已经查看了travis,它已经在为我做测试了,但是我不确定travis是否应该或者可以将代码推送到回购。毕竟可能是最好的,不提交构建文件,因为它们可以从源计算吗?
答案 0 :(得分:1)
首先,在版本控制下存储已发布的代码根本不是一个好主意。
了解history
项目中的解决方法:https://github.com/rackt/history/blob/master/npm-scripts/postinstall.js
他们有一个NPM的postinstall
脚本,它检查该模块是否尚未构建并构建它。
如果您将此内容添加到您的仓库,您的消费者将在安装期间即时构建模块。此外,如果您要在NPM注册表中发布此内容,请不要忘记包含构建的文件以减少安装时间。