web-dev-qa-db-ja.com

複数の(npm)package.jsonファイルをGulpで1つにマージする方法は?

MainFolderと3つのサブフォルダー(subFolderA、subfolderB、subfolderC)があるとしましょう。

そして、これらのサブフォルダーにはすべて、依存関係とdevDependenciesを持つpackage.jsonが含まれています。 (mainFolder/subFolderA/package.json)

それらをmainFolderの単一のpackage.jsonに結合したい(mainFolder/package.json)

Package.jsonの依存関係とdevDependenciesを組み合わせてマージする既存のgulpパッケージ(またはGulp以外の他のソリューション)はありますか?

(バージョンの競合がないと仮定しましょう。解決策がそのケースもカバーしている場合、それは素晴らしいことです!)

Gulpfile.jsの例を投稿したり、他の方法やツールについて説明したりできますか。

ありがとうございました

13
Murat Ozgul

このノードパッケージを使用して、package.jsonファイルをマージしてみてください。 https://www.npmjs.com/package/package-merge

@ durによって次のコメントを編集します

例:

var merge = require('package-merge')
var fs = require('fs');

var dst = fs.readFileSync('package.a.json');
var src = fs.readFileSync('package.b.json');
fs.writeFile("/tmp/package.merged.json", merge(dst,src));
7
Gabriel Kohen

2つのオプションがあります。

json-merge

json-merge package.json --parse="dependencies" package2.json --parse="devDependencies"

npm-deps は、ネストされたpackage.jsonファイルのサブディレクトリをスキャンし、すべての依存関係を1つのpackage.jsonファイルにマージして、stdoutに出力します。

標準入力を介して渡された基本テンプレートを使用して、ルートのpackage.jsonファイルが生成されます。これにより、自動生成されたファイルと競合するバージョン管理システムでpackage.jsonを無視できます。名前やバージョンなどの基本パッケージ属性は、package-base.jsonなどの別のファイルに保存して、バージョン管理に保持できます。

$ cd my_cool_project $ npm-deps < package-base.json > package.json

2
timelf123

あなたが試すことができます - package-json-merge npmモジュール。それをインストールするには、次のコマンドを使用します-

npm install -g package-json-merge

次に、以下のコマンドを使用して、複数のpackage.jsonを1つに結合します-

package-json-merge package1.json package2.json .... packageN.json > package.json

2
Lokesh Jain