在代码更改时自动重新加载Sails.js应用程序?

sub*_*lue 102 node.js sails.js

目前似乎对于sails.js应用程序中的任何代码更改,您必须手动停止sails服务器并sails lift再次运行,然后才能看到更改.

我想知道在开发模式下运行时是否有任何方法在检测到代码更改时自动重启sails服务器?

San*_*nda 73

你必须使用像forever,nodemon或其他东西一样的观察者......

  1. 通过运行永远安装:

    sudo npm install -g forever

  2. 运行:

    forever -w start app.js


为避免无限重启,因为Sails写入.tmp文件夹,您可以.foreverignore在项目目录中创建一个文件并将此内容放入:

**/.tmp/**
**/views/**
**/assets/**
Run Code Online (Sandbox Code Playgroud)

请参阅GitHub上的问题: 由于/.tmp而永远重启.

  • 您可能还希望向`.foreverignore`添加视图,因为它们不需要重新启动即可立即查看更改.例如`**/views/**` (7认同)

Vit*_*nok 47

您可以使用sails-hook-autoreload

只需正常抬起您的应用程序,当您添加/更改/删除模型或控制器文件时,将重新加载所有控制器和模型,而无需降低/重新移动应用程序.


wos*_*oss 44

例如,nodemon用于观看api和config目录

.nodemonignore 内容

views/*
.tmp/*
.git/*
Run Code Online (Sandbox Code Playgroud)

创建.nodemonignore后运行该命令

$> nodemon -w api -w config
Run Code Online (Sandbox Code Playgroud)

主管忽略3个目录的示例

$> supervisor -i .tmp,.git,views app.js
Run Code Online (Sandbox Code Playgroud)

  • 鉴于`nodemon`管道如何输出回stdout w/o其他配置,我喜欢``nodemon`解决方案而不是`forever`解决方案.使开发工作流程更容易. (4认同)

Ben*_*ied 8

如果您使用的是Sails 0.11,则可以安装此挂钩以在更改模型或控制器时自动重新加载(视图不需要重新加载):

npm install sails-hook-autoreload
Run Code Online (Sandbox Code Playgroud)

https://www.npmjs.com/package/sails-hook-autoreload


jos*_*c89 7

我有同样的问题,我使用grunt-watch和grunt-forever与sails @ beta任务解决了它.结果是4个grunt命令:

更新:任务在当前风帆版本中可用(它不再是beta:>)

  • start启动服务器
  • 停止停止服务器
  • restart重新启动服务器
  • startWatch启动服务器并等待更改以重新启动它(使用grunt-watch).这可能是您的解决方案,但其他命令也很有用.

这是代码 - 我正在使用sails @ beta,其中包含一个任务目录,我不知道这是否包含在以前的版本中:

  • 首先,你必须永远安装在你的sails目录中:

    npm install grunt-forever --save-dev
    
    Run Code Online (Sandbox Code Playgroud)
  • tasks/config / forever.js永远配置任务.

    module.exports = function(grunt) {
      grunt.config.set('forever', {
        server: {
           options: {
              index: 'app.js',
              logDir: 'logs'
           }
        }
      });
    
      grunt.loadNpmTasks('grunt-forever');
    };
    
    Run Code Online (Sandbox Code Playgroud)
  • tasks/config/watch.js(编辑)编辑监视任务以添加新规则

    // api and assets default rules
    ,
    server: {
        // Server files to watch:
        files: [
            'api/**/*',
            'config/**/*'
        ],
    
        // Restart server
        tasks: ['forever:server:restart']
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • tasks/register/watchForever.js注册您的自定义任务(此文件可以重命名为您想要的任何内容)

    module.exports = function(grunt) {
    // Starts server
      grunt.registerTask('start', [
        'compileAssets',
        'linkAssetsBuild',
        'clean:build',
        'copy:build',
        'forever:server:start'
      ]);
    
      // Restarts the server (if necessary) and waits for changes
      grunt.registerTask('startWatch', [
        'restart',
        'watch:server'
      ]);
    
      // Restarts server
      grunt.registerTask('restart', [
        'forever:server:restart'
      ]);
    
      // Stops server
      grunt.registerTask('stop', [
        'forever:server:stop'
     ]);
    };
    
    Run Code Online (Sandbox Code Playgroud)

有了这个,你应该可以使用

    grunt startWatch
Run Code Online (Sandbox Code Playgroud)

并让服务器等待重新启动更改:>

希望这有帮助!


Muj*_*bly 7

nodemon全局或本地安装.

npm install nodemon --save
npm install nodemon -g
Run Code Online (Sandbox Code Playgroud)

sails在您的项目中本地安装如下

npm install sails --save
Run Code Online (Sandbox Code Playgroud)

然后改变 package.json

"scripts": {
  "debug": "node debug app.js",
  "start": "node app.js"
},
Run Code Online (Sandbox Code Playgroud)

"scripts": {
   "debug": "node debug app.js",
   "start": "node app.js",
   "dev": "export NODE_ENV=development && nodemon --ignore 'tmp/*' app.js && exit 0"
},
Run Code Online (Sandbox Code Playgroud)

然后

npm run dev
Run Code Online (Sandbox Code Playgroud)


小智 6

更好地使用

npm install -g nodemon
Run Code Online (Sandbox Code Playgroud)

我正在使用它,它将有助于提高我的开发速度。无需为此编辑任何文件!。

安装后

nodemon app.js
Run Code Online (Sandbox Code Playgroud)