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

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

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

你必须使用永远的观察者, nodemon或其他东西…

  1. 通过运行永远安装:

    sudo npm install -g forever

  2. 运行:

    forever -w start app.js


为了避免无限重启,因为Sails将文件写入.tmp文件夹中,您可以在您的项目目录中创build.foreverignore文件并将其放入:

 **/.tmp/** **/views/** **/assets/** 

查看GitHub上的问题: 由于/.tmp永远重启 。

你可以使用sails-hook-autoreload

正常地解除您的应用程序,当您添加/更改/删除模型或控制器文件时,所有控制器和模型将被重新加载,而不必降低/重新拖动应用程序。

例如用nodemon来监视api和config目录

.nodemonignore内容

 views/* .tmp/* .git/* 

创build.nodemonignore后运行该命令

 $> nodemon -w api -w config 

主pipe忽略3个目录的例子

 $> supervisor -i .tmp,.git,views app.js 

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

 npm install sails-hook-autoreload 

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

我有同样的问题,我已经用sails @ beta任务使用grunt-watch和grunt永远解决了它。 结果是4个grunt命令:

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

  • 启动启动服务器
  • 停止停止服务器
  • 重新启动重新启动服务器
  • startWatch启动服务器并等待更改以重新启动服务器(使用grunt-watch)。 这可能是你的解决scheme,但其他命令也是有用的。

下面是代码 – 我使用的是sails @ beta,它包含一个tasks目录,我不知道这是否包含在以前的版本中:

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

     npm install grunt-forever --save-dev 
  • tasks / config / forever.jsconfiguration永久任务。

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

     // api and assets default rules , server: { // Server files to watch: files: [ 'api/**/*', 'config/**/*' ], // Restart server tasks: ['forever:server:restart'] } 
  • 任务/注册/ 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' ]); }; 

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

  grunt startWatch 

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

希望这有助于!

对于现在任何人来说这个问题,似乎这不再是必要的 – 一个启动sails lift的应用程序将运行一个grunt的监视任务,代码更改将可见,而无需重新启动。

我一开始并没有意识到这种情况,因为没有任何东西可以指出控制台中发生了什么事情,但似乎没有重新启动(我使用的是Sails 0.11)

更好地使用

 npm install -g nodemon 

我正在使用这个,这将有助于提高我的发展速度。 没有必要编辑这个的任何文件!

安装后

 nodemon app.js 

在全局或本地安装nodemon

 npm install nodemon --save npm install nodemon -g 

在本地安装sails项目如下

 npm install sails --save 

然后改变package.json

 "scripts": { "debug": "node debug app.js", "start": "node app.js" }, 

 "scripts": { "debug": "node debug app.js", "start": "node app.js", "dev": "export NODE_ENV=development && nodemon --ignore 'tmp/*' app.js && exit 0" }, 

然后

 npm run dev