我刚刚切换到Wordpress的Roots Sage入门主题:roots.io/sage/docs/,我目前正在阅读部署过程 .
我的流程通常是: - 进行更改 - 使用grunt / gulp构建 - 提交(包括编译的脚本) - 部署
Sage的.gitignore文件从repo中删除dist文件夹(编译文件) . 回购中没有css / js . 您是否应该在部署后安装node / npm并在登台/ 生产环境 环境中构建资产?如果是这样,如何在部署后在远程服务器上触发gulp / grunt任务?
我正在使用https://www.springloops.com/来管理git和deploy .
1 回答
你应该避免这样做 . 关于将编译资产提交给VCS的看法不一,正如您之前所说的那样 .
我们来看一个例子 .
你在本地完成了所有测试 . 您没有在几天内运行
npm update
,并且其中一个依赖项指定了松散版本约束;像"~1.0.0"
这样的东西 .你部署 . 在服务器上,
npm install
在gulp
或grunt
之前运行 .gulp
运行,您的资产的构建成功完成,您的应用程序的新版本现在正在运行 .您不知道,该依赖项的版本
1.0.1
昨天已发布 . 无论出于何种原因,1.0.1
引入了一项破坏应用程序功能的更改 . That breaking change is now live on your site in production.即使你可以保证在服务器上从
npm install
拉出的所有依赖关系都会反映你在本地/暂存时的内容,但是在服务器上维护另一组软件(node.js,ruby等等)的头痛只是为了编译资产应足以阻止您在 生产环境 中进行编译 .IMO,您应该将已编译的资产保留在VCS之外,并将它们作为部署的一部分与您的服务器进行rsync .