現在、sails.jsアプリのコードを変更する場合は、sailsサーバーを手動で停止してsails lift
変更を確認する前にもう一度。
開発モードで実行しているときに、コードの変更を検出したときに、sailsサーバーを自動的に再起動する方法があるかどうか疑問に思っていましたか?
forever 、 nodemon などのウォッチャーを使用する必要があります...
次を実行してforeverをインストールします:
Sudo npm install -g forever
それを実行します:
forever -w start app.js
Sailsが.tmp
フォルダーに書き込むために無限に再起動しないようにするには、プロジェクトディレクトリに.foreverignore
ファイルを作成し、このコンテンツを内部に配置します。
**/.tmp/**
**/views/**
**/assets/**
GitHubの問題を参照してください: /。tmpのために再起動しない 。
sails-hook-autoreload を使用できます
通常どおりアプリを持ち上げるだけで、モデルまたはコントローラーファイルを追加/変更/削除すると、アプリを下げたり持ち上げたりすることなく、すべてのコントローラーとモデルがリロードされます。
たとえば、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
私も同じ問題を抱えていましたが、sunts @ betaタスクでgrunt-watchとgrunt-foreverを使用して解決しました。結果は、4つのうっとりするようなコマンドです:
更新:現在のセールバージョンでタスクを利用できます(ベータ版ではなくなりました:>)
ここにコードがあります-私はtasksディレクトリを含む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
には、うっとうしい監視タスクが実行され、コードの変更は再起動なしで表示されます。
コンソールで何が起こっているかを示すものがないため、最初はこれが起こっていたことに気付きませんでしたが、再起動せずに動作するようです(Sails 0.11を使用しています)