我刚刚切换到Wordpress: roots.io/ Sage /docs/的roots.io初学者主题,目前正在阅读部署过程。
我的流程通常是:-进行更改-使用grunt/gulp提交构建(包括编译脚本)-部署。
Sage的.gitignore文件从repo中删除dist文件夹(已编译的文件)。在回购中没有css/js。您应该在部署后在暂存/生产环境上安装节点/npm并构建资产吗?如果是这样的话,如何在部署后在远程服务器上触发gulp/grunt任务?
我使用https://www.springloops.com/来管理git和部署。
发布于 2015-04-09 18:48:38
您应该在部署后在暂存/生产环境上安装节点/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。
https://stackoverflow.com/questions/29545471
复制相似问题