私は分離されたマイクロサービスを使用してアプリケーションを構築しています。それぞれ独自のリポジトリとnpmの依存関係があり、異なるサーバ上にある可能性があります。複数のnpmリポジトリに共有package.jsonを作成する方法
私はすべての依存関係をurlでアクセスできるグローバルpackage.json
ファイルに入れる方法を探しています。 そのようにして、すべての異なるマイクロサービスを実行せずに共有依存バージョンを更新できますそれらを1つずつ更新します。
可能ですか?
私は分離されたマイクロサービスを使用してアプリケーションを構築しています。それぞれ独自のリポジトリとnpmの依存関係があり、異なるサーバ上にある可能性があります。複数のnpmリポジトリに共有package.jsonを作成する方法
私はすべての依存関係をurlでアクセスできるグローバルpackage.json
ファイルに入れる方法を探しています。 そのようにして、すべての異なるマイクロサービスを実行せずに共有依存バージョンを更新できますそれらを1つずつ更新します。
可能ですか?
残念ながらNPMは、親package.jsonファイルの指定をサポートしていません。このような機能はproposed some time agoでしたが、npmのメンテナーは外部ツールによって達成されるべきであるという結論に達しました。
もちろん、あなたはこのようなツールを自分で書くことができます。すべての共有の依存関係を持つpackage.json
ファイルを含むライブラリを作成します
:可能aporachesの一つがあります。この例では、shared-deps
と呼ばれます。
ローカルpackage.json
ファイルへの共有の依存関係を追加するmerge.js
スクリプトを作成し、shared-deps
ライブラリに追加:
const fs = require('fs')
const localPackageJson = require('../../package.json')
const sharedPackageJson = require('./package.json')
Object.assign(localPackageJson.dependencies, sharedPackageJson.dependencies)
fs.writeFileSync('../../package.json', JSON.stringify(localPackageJson, null, 2))
がフックをインストール後、次のこの共有の依存関係を使用するアプリのpackage.json
に追加します。あなたがnpm install
を実行したときに
"scripts": {
"postinstall": "node ./node_modules/a/merge.js"
}
今、あなたの共有依存関係がインストールされますTOGエーテルはshared-deps
ライブラリ、あなたのpackage.json
はその後更新されます。
素晴らしい、ありがとう! –
私は分かりません。これをpostinstallに入れると、インストールが完了した後にマージが行われ、マージされた依存関係はどのようにインストールされますか?これは、2 npmを連続して呼び出す必要があることを意味しますか? –