我刚刚切换到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。
答案 0 :(得分:2)
您是否应该在部署后安装node / npm并在登台/生产环境中构建资产?
你应该避免这样做。关于将编译资产提交给VCS的意见不一,正如您之前所说的那样。
让我们看一个例子。
您在本地完成了所有测试。您几天内无法运行npm update
,其中一个依赖项指定了松散的版本约束;类似于"~1.0.0"
。
您部署。在服务器上,npm install
在gulp
或grunt
之前运行。 gulp
运行,资产的构建成功完成,新版本的应用现已上线。
您不知道,该依赖项的版本1.0.1
昨天已发布。无论出于何种原因,1.0.1
引入了一项更改,该更改会破坏您应用内的功能。 这一重大变化现已在您的网站上生效。
即使您可以保证从服务器上的npm install
中提取的所有依赖项都会反映您在本地/暂存时的内容,但是在服务器上维护另一组软件(node.js,ruby等)的头痛...)仅用于编译资产应足以阻止您在生产中进行编译。
IMO,您应该将已编译的资产保留在VCS之外,并在部署过程中将它们rsync到您的服务器。