在代码更改时自动重新加载Sails.js应用程序?
目前看来,对于sails.js应用程序中的任何代码更改,您必须手动停止sails服务器并再次运行sails,然后才能看到更改。
我想知道是否有什么方法在开发模式下运行,当它检测到代码更改时自动重新启动sails服务器?
你必须使用永远的观察者, nodemon或其他东西…
例
-
通过运行永远安装:
sudo npm install -g forever
-
运行:
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
我有同样的问题,我已经用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