部署后如何在远程服务器上触发gulp / grunt任务?

时间:2015-04-09 17:47:27

标签: deployment gruntjs npm gulp

我刚刚切换到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 个答案:

答案 0 :(得分:2)

  

您是否应该在部署后安装node / npm并在登台/生产环境中构建资产?

你应该避免这样做。关于将编译资产提交给VCS的意见不一,正如您之前所说的那样。

让我们看一个例子。

您在本地完成了所有测试。您几天内无法运行npm update,其中一个依赖项指定了松散的版本约束;类似于"~1.0.0"

您部署。在服务器上,npm installgulpgrunt之前运行。 gulp运行,资产的构建成功完成,新版本的应用现已上线。

您不知道,该依赖项的版本1.0.1昨天已发布。无论出于何种原因,1.0.1引入了一项更改,该更改会破坏您应用内的功能。 这一重大变化现已在您的网站上生效。

即使您可以保证从服务器上的npm install中提取的所有依赖项都会反映您在本地/暂存时的内容,但是在服务器上维护另一组软件(node.js,ruby等)的头痛...)仅用于编译资产应足以阻止您在生产中进行编译。

IMO,您应该将已编译的资产保留在VCS之外,并在部署过程中将它们rsync到您的服务器。