Node.js でファイルの自動リロードを実装する方法について何かアイデアはありますか? ファイルを変更するたびにサーバーを再起動するのは面倒です。どうやら Node.js のrequire()
関数は、すでに要求されているファイルはリロードしないようですので、次のようにする必要があります。
var http = require('http'),
posix = require('posix'),
json = require('./json');
var script_name = '/some/path/to/app.js';
this.app = require('./app').app;
process.watchFile(script_name, function(curr, prev){
posix.cat(script_name).addCallback(function(content){
process.compile( content, script_name );
});
});
http.createServer(this.app).listen( 8080 );
app.jsファイルには次の内容が含まれています:
var file = require('./file');
this.app = function(req, res) {
file.serveFile( req, res, 'file.js');
}
しかし、これも機能しません。ステートメントでprocess.compile()
「require」が定義されていないというエラーが発生します。app.jsをprocess.compile
評価していますが、node.js のグローバルについてはわかりません。
ベストアンサー1
良い最新の代替品supervisor
はnodemon
:
Node.jsアプリケーションの変更を監視し、サーバーを自動的に再起動します。開発に最適です。
nodemon
Node のバージョンなしで使用する場合npx
(v8.1 以下は推奨されません):
$ npm install nodemon -g
$ nodemon app.js
または、バンドルされているnodemon
Node のバージョンnpx
(v8.2+) で使用するには:
$ npm install nodemon
$ npx nodemon app.js
または、package.json 内の npm スクリプトで devDependency として指定します。
"scripts": {
"start": "nodemon app.js"
},
"devDependencies": {
"nodemon": "..."
}