1. ホーム
  2. node.js

[解決済み] ネストされたフォルダのためにnpm installを実行する最良の方法?

2022-04-15 23:50:20

質問

をインストールする最も正しい方法は何ですか? npm packages をネストしたサブフォルダで使用することはできますか?

my-app
  /my-sub-module
  package.json
package.json

を持たせるにはどうしたらよいでしょうか? packages/my-sub-module が自動的にインストールされます。 npm install で実行します。 my-app ?

解決方法は?

ネストしたサブフォルダに npm パッケージをインストールするコマンドを 1 つだけ実行したい場合は、スクリプトを npm とメイン package.json をルートディレクトリに配置します。このスクリプトはすべてのサブディレクトリを訪れ npm install .

以下は .js スクリプトを実行することで、望ましい結果を得ることができます。

var fs = require('fs');
var resolve = require('path').resolve;
var join = require('path').join;
var cp = require('child_process');
var os = require('os');
    
// get library path
var lib = resolve(__dirname, '../lib/');
    
fs.readdirSync(lib).forEach(function(mod) {
    var modPath = join(lib, mod);
    
    // ensure path has package.json
    if (!fs.existsSync(join(modPath, 'package.json'))) {
        return;
    }

    // npm binary based on OS
    var npmCmd = os.platform().startsWith('win') ? 'npm.cmd' : 'npm';

    // install folder
    cp.spawn(npmCmd, ['i'], {
        env: process.env,
        cwd: modPath,
        stdio: 'inherit'
    });
})

の例であることに注意してください。 StrongLoop の記事で、特にモジュール化された node.js プロジェクト構造(ネストしたコンポーネントや package.json ファイル)を作成します。

提案されているように、bashスクリプトで同じことを実現することも可能です。

EDIT: Windowsで動作するようにしました。