在Git推送后,在post-receive hook中运行Gulp

时间:2017-05-19 15:49:22

标签: git deployment gulp centos

我有一个Git工作流程,我将我的Git更新推送到一个裸的repo,触发以下post-receive钩子:

#!/bin/sh
git --work-tree=/home/website/stage/public_html  --git-dir=/home/website/stage/website.git checkout -f

cd /home/website/stage/public_html/wp-content/themes/theme/src/js/
npm install
gulp

这会从package.json文件安装我的npm包,但是gulp命令不起作用。说没有找到'命令'。

我不知道这是否是用gulp构建我的dist /文件夹的正确方法?即使我通过SSH连接到服务器并尝试运行npm installgulp,它仍会产生相同的错误。我在CentOS服务器上运行。

提前致谢。

2 个答案:

答案 0 :(得分:2)

它无效,因为gulp不在服务器的PATH中

在CentOS / Linux上,您可以使用echo $PATH

检查当前路径

解决方案1:使用-g

添加gulp到路径
npm install -g gulp

-g选项在您的服务器上全局安装软件包。它很方便,但如果不同的项目使用不同版本的gulp,则可能会出现问题。

解决方案2:从node_modules运行脚本

npm install(没有-g选项运行)在node_modules目录中安装gulp。从那里执行。

node ./node_modules/gulp/bin/gulp.js

./node_modules/gulp/bin/gulp

解决方案3:创建一个npm.script

更优雅的解决方案是在您的packages.json

中添加一个脚本
"scripts": { "gulp": "gulp" }

然后你可以做

npm run gulp

npm脚本自动使用node_modules文件夹

答案 1 :(得分:1)

您可能需要通过运行npm install gulp -g

在构建服务器上全局安装gulp