1

小さなものがありますが、それは私を悩ませます。ノードモジュールを使用する場合は、手動でインストールして必要とし、package.jsonに追加する必要があります。あなたがそれを使いたくないのなら、それは逆に同じことです。

モジュールが必要になった後、node_modulesに/からインストール/削除し、package.jsonに/から自動的に追加/削除するツールはありますか?

これは、後でなくても存在しなければならない単純なものです。

4

3 に答える 3

3

それは非常に興味深い質問です。解決策が見つからなかったので、自分で小さなスクリプトを書きました。次の内容のメインファイルがあるとします。

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

于 2012-10-17T19:05:13.107 に答える
1

ソースコードを変更したときにパッケージを自動的にインストールするツールを知りません。あなたが本当にそれを望むなら、作るのはそれほど難しいことではないはずです:)

カイルが言ったように、--saveあなたが望むもののために働くことができます。npm shrinkwrapあなたのスナップショットを取り、node_modulesそれがあなたのために管理するファイルを更新することもあります。そのファイルをgitにチェックインするだけで、Heroku(またはを使用する他の場所)にデプロイすると、依存関係のファイルのnpm install代わりにそれが使用されます。package.json

于 2012-10-15T08:00:20.727 に答える
1

npmは--saveフラグを使用してそれを行うことができます:npm install [package] --saveまたはnpm install [package] --save-devdevDependencies。npmインストールドキュメントをチェックしてください:https ://npmjs.org/doc/install.html

于 2012-10-15T07:08:07.297 に答える