小さなものがありますが、それは私を悩ませます。ノードモジュールを使用する場合は、手動でインストールして必要とし、package.jsonに追加する必要があります。あなたがそれを使いたくないのなら、それは逆に同じことです。
モジュールが必要になった後、node_modulesに/からインストール/削除し、package.jsonに/から自動的に追加/削除するツールはありますか?
これは、後でなくても存在しなければならない単純なものです。
小さなものがありますが、それは私を悩ませます。ノードモジュールを使用する場合は、手動でインストールして必要とし、package.jsonに追加する必要があります。あなたがそれを使いたくないのなら、それは逆に同じことです。
モジュールが必要になった後、node_modulesに/からインストール/削除し、package.jsonに/から自動的に追加/削除するツールはありますか?
これは、後でなくても存在しなければならない単純なものです。
それは非常に興味深い質問です。解決策が見つからなかったので、自分で小さなスクリプトを書きました。次の内容のメインファイルがあるとします。
index.js:
var colors = require('colors');
console.log('this comes from my main file');
colors
インストールして実行していない場合はnode index.js
、エラーが発生しますError: Cannot find module 'colors'
。
これを機能させるには、ファイルmodule.js
の代わりに実行する別のファイルを作成しindex.js
ます。
module.js:
var exec = require('child_process').exec;
try {
// require your main file here
require('./index');
} catch(e) {
if (e.code === 'MODULE_NOT_FOUND') {
var message = e.message;
console.log(message);
var module = message.match(/\'([a-z]+)\'/)[1];
console.log('Installing ' + module + ' ...');
exec('npm install ' + module + ' --save', function(error, stdout, stderr) {
if (error) console.log(error);
console.log(JSON.stringify(stdout).replace(/\\n/g, "") + ' successfully installed');
});
}
}
今実行するnode module.js
と、次のようになります
Cannot find module 'colors'
Installing colors ...
"colors@0.6.0-1 node_modules/colors" successfully installed
node module.js
もう一度走ると
this comes from my main file // this is what you want
そしてcolors
あなたのファイルに追加されますpackage.json
。すべてのプロジェクトで再利用でき、関数をmodule.js
変更するだけで適切なファイルを取得できます。require
ソースコードを変更したときにパッケージを自動的にインストールするツールを知りません。あなたが本当にそれを望むなら、作るのはそれほど難しいことではないはずです:)
カイルが言ったように、--save
あなたが望むもののために働くことができます。npm shrinkwrap
あなたのスナップショットを取り、node_modules
それがあなたのために管理するファイルを更新することもあります。そのファイルをgitにチェックインするだけで、Heroku(またはを使用する他の場所)にデプロイすると、依存関係のファイルのnpm install
代わりにそれが使用されます。package.json
npmは--save
フラグを使用してそれを行うことができます:npm install [package] --save
またはnpm install [package] --save-dev
devDependencies。npmインストールドキュメントをチェックしてください:https ://npmjs.org/doc/install.html