我有一个基于yeoman angular的应用程序,使用grunt serve
运行。
让这个应用程序一直运行是至关重要的。我以前一直使用它,它工作得很好,但它通常适用于特定的js文件。而我想将它用于grunt serve
任务。
我发现了一个名为grunt forever的插件-https://github.com/bustardcelly/grunt-forever-但是我不知道如何设置我的gruntfile.js来使用它来调用grunt serve
命令。
我的grunt文件的服务器部分是yeoman为angular应用程序生成的标准部分。如下所示-
grunt.registerTask('serve', function (target) {
if (target === 'dist') {
return grunt.task.run(['build', 'express:prod', 'open', 'express-keepalive']);
}
grunt.task.run([
'clean:server',
'bower-install',
'concurrent:server',
'autoprefixer',
'express:dev',
'open',
'watch'
]);
});
有人知道如何永远使用咕哝来调用该命令吗?
我今天试图自己解决这个问题,在找到答案的路上遇到了这篇文章。
我对这一切还是有点陌生,但得出的结论是,grunt更适合用于开发任务,不建议用于生产。(我可能错了)。
我遇到的主要陷阱是试图使用咕哝(并且无法说出神奇的咒语),然后一旦我发现我应该直接使用node,让路径正常工作。
这就是我最后所做的,我的应用程序是用DaftMonk的生成器角度全栈生成的:
sudo npm install forever forever-service -g
cd ~/<project directory>/server
sudo forever-service install <service name> -s /<full path to project directory>/server/app.js -e "PATH=/usr/local/bin:$PATH" --start
验证发生了什么:
tail -f /var/logs/<service name>.log
这是我的配置,到目前为止我已经检查过了。它能够从简单的错误中恢复并重新启动服务器。
//load the forever task
grunt.loadNpmTasks('grunt-forever');
// Define the configuration for all the tasks
grunt.initConfig({
....
forever: {
server1:{
options: {
index: 'server/app.js'
}
}
},
});
...
grunt.registerTask('serve', function (target) {
if (target === 'dist') {
return grunt.task.run(['build', 'env:all', 'forever:server1:start', 'express:prod', 'wait', 'open', 'express-keepalive']);
}
});
附言:我读了你的另一个自耕农问题,觉得你一定也问过这个问题。