如何使用grunt永远保持yeoman angular应用程序的活力



我有一个基于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']);
  }
});

附言:我读了你的另一个自耕农问题,觉得你一定也问过这个问题。