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

How do you trigger a gulp/grunt task on a remote server after deploy?

我刚刚切换到 Wordpress 的 Roots Sage 入门主题:roots。io/sage/docs/ 我目前正在阅读部署过程。

我的流程通常是: - 做出改变 - 使用 grunt/gulp 构建 - 提交(包括编译脚本) -部署

Sage 的 .gitignore 文件从 repo ie 中删除 dist 文件夹(编译文件)。回购中没有 css/js。您是否应该在部署后安装 node/npm 并在 staging/production 环境中构建资产?如果是这样,部署后如何在远程服务器上触发 gulp/grunt 任务?

我正在使用 https://www.springloops.com/ 来管理 git 和部署。

Are you supposed to install node/npm and build the assets on staging/production environment after deploy?

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

让我们看一个例子。

您在本地完成了所有测试。您有几天没有 运行 npm update,并且您的一个依赖项指定了松散的版本约束;像 "~1.0.0".

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

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

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

IMO,您应该将已编译的资产放在 VCS 之外,并将它们作为部署的一部分同步到您的服务器。