目前看来,对于sails.js 应用程序中的任何代码更改,您必须手动停止sails 服务器并sails lift
再次运行,然后才能看到更改。
我想知道在开发模式下运行时是否有任何方法可以在检测到代码更改时自动重启sails服务器?
您必须使用像forever,nodemon或其他东西这样的观察者......
通过运行永久安装:
sudo npm install -g forever
运行:
forever -w start app.js
为了避免因为 Sails 写入.tmp
文件夹而无限重启,您可以在项目目录中创建一个.foreverignore
文件并将此内容放入:
**/.tmp/**
**/views/**
**/assets/**
请参阅 GitHub 上的问题: Forever restarting because of /.tmp。
只需像往常一样提升您的应用程序,当您添加/更改/删除模型或控制器文件时,所有控制器和模型都将重新加载,而无需降低/重新提升应用程序。
例如nodemon
监视 api 和 config 目录
.nodemonignore
内容
views/*
.tmp/*
.git/*
创建 .nodemonignore 后运行命令
$> nodemon -w api -w config
主管忽略 3 个目录的示例
$> supervisor -i .tmp,.git,views app.js
如果您使用的是 Sails 0.11,则可以安装此挂钩以在更改模型或控制器时自动重新加载(视图不需要重新加载):
npm install sails-hook-autoreload
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
我遇到了同样的问题,我已经使用 grunt-watch 和 grunt-forever 和sails@beta 任务解决了这个问题。结果是 4 个 grunt 命令:
更新:当前的sails版本中提供了任务(它不再是测试版:>)
这是代码 - 我正在使用sails@beta,其中包含一个任务目录,我不知道这是否包含在以前的版本中:
首先,您必须永久安装在您的sails 目录中:
npm install grunt-forever --save-dev
tasks/config/ forever.js 配置永久任务。
module.exports = function(grunt) {
grunt.config.set('forever', {
server: {
options: {
index: 'app.js',
logDir: 'logs'
}
}
});
grunt.loadNpmTasks('grunt-forever');
};
tasks/config/watch.js ( edit )编辑监视任务以添加新规则
// api and assets default rules
,
server: {
// Server files to watch:
files: [
'api/**/*',
'config/**/*'
],
// Restart server
tasks: ['forever:server:restart']
}
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'
]);
};
有了这个你应该可以使用
grunt startWatch
并让您的服务器等待更改重新启动:>
希望这有帮助!
更好地使用
npm install -g nodemon
我正在使用它,它将有助于提高我的开发速度。无需为此编辑任何文件!
安装后
nodemon app.js
对于现在提出这个问题的任何人来说,这似乎不再需要 - 启动的应用程序sails lift
将运行 grunt watch 任务,并且无需重新启动即可看到代码更改。
起初我没有意识到这是发生的,因为没有任何迹象表明控制台中发生了什么,但它似乎无需重新启动就可以工作(我使用的是 Sails 0.11)