S / O,
我一直试图为我正在开发的网络应用程序进行自动部署,并且我已经设置了一个git post-receive hook来处理工匠迁移,作曲家更新,npm更新,然后运行Grunt复制,uglify等所有必要的资产。
我的Grunt任务在一切完成后执行grunt-contrib-watch,以便进行本地开发。现在,我不想经历为开发人员设置单独的Gruntfiles的麻烦。暂存,所以在我收到后,我执行Gruntfile.js然后尝试终止进程(所以看不会继续在登台服务器上运行)。
我收到后的最后两行是这样的:
grunt --gruntfile /dir/dir/Gruntfile.js >> log.txt
pkill grunt -e >> log.txt
但是,由于ps aux | grep grunt
仍然返回一个活动进程,并且没有相关输出附加到我的log.txt
文件,因此这似乎没有终止该进程。
这里的任何想法都将不胜感激。
谢谢!
答案 0 :(得分:0)
好的,我用两种方式解决了这个问题:
第一种方法是附加一个&在grunt调用结束时,将CLI的控制权交还给我的post-receive脚本。这很有效,但它要求我在pkill之前在那里睡一觉,以确保在杀死进程之前完成了grunt任务。不是那种我想要完成这项任务的模糊控制。
所以,我继续弄清楚如何在我的Gruntfile中设置一个单独的任务进行暂存。这比我最初预期的更容易,更实用。
注册了一个单独的任务,最后没有执行手表,我所要做的就是像这样执行grunt:
grunt --gruntfile /dir/dir/Gruntfile.js staging >> log.txt
其中staging
是我在grunt中注册的任务的名称。作为一个注释,Grunt只会在没有这个额外参数的情况下执行default
任务,所以它仍然可以正常工作,无需更改我的工作流程就可以在本地运行:)
谢谢,无论如何。希望有人觉得这个答案很有用!