これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド npm-shrinkwrap です。
プログラム:
NAME
npm-シュリンクラップ - 依存関係のバージョンをロックダウンする
SYNOPSIS
npmシュリンクラップ
DESCRIPTION
このコマンドは、パッケージの依存関係のバージョンをロックダウンして、制御できるようにします。
パッケージのインストール時に各依存関係のどのバージョンが正確に使用されるか。 の
package.json 使用する場合はファイルが引き続き必要です npm install.
デフォルトでは、 npm install ターゲットの依存関係を再帰的にインストールします (で指定されているように)
package.json)、依存関係を満たす最新の利用可能なバージョンを選択します。
セムバーパターン。 状況によっては、特にソフトウェアの出荷時にそれぞれ変更が加えられる場合があります。
厳密に管理されているため、各依存関係の各バージョンを完全に指定することが望ましい
後続のビルドとデプロイで誤って新しいものを選択しないように再帰的に実行します。
サーバー パターンを満たす依存関係のバージョン。 特定のサーバーを指定する
各依存関係のパターン package.json これは容易になりますが、常にそうとは限りません
別の作成者が npm パッケージを所有している場合のように、可能または望ましい。 以下のことも可能です
依存関係をソース管理に直接チェックしますが、他のユーザーにとっては望ましくない可能性があります。
理由。
例として、パッケージ A を考えてみましょう。
{
"名前": "A",
"バージョン": "0.1.0",
"依存関係": {
"B": "<0.1.0"
}
}
パッケージB:
{
"名前": "B",
"バージョン": "0.0.1",
"依存関係": {
"C": "<0.1.0"
}
}
およびパッケージ C:
{
"名前": "C",
「バージョン」:「0.0.1」
}
レジストリで使用可能なバージョン A、B、および C がこれらのみである場合、通常の npm
install A インストールされます:
[メール保護]
`-- [メール保護]
`-- [メール保護]
ただし、 [メール保護] が公開されてから、新しい npm install A インストールされます:
[メール保護]
`-- [メール保護]
`-- [メール保護]
新しいバージョンが B の依存関係を変更していないと仮定します。 もちろん、Bの新しいバージョン
新しいバージョンの C と任意の数の新しい依存関係を含めることができます。 このような変化があれば、
望ましくないことですが、A の作成者が依存関係を指定する可能性があります。 [メール保護]。 ただし、A の作者の場合、
A の著者と B の著者は同一人物ではないため、A の著者が彼または B の著者であると言う方法はありません。
彼女は、B がまったく変更されていないときに、新しく公開されたバージョンの C を取り込みたくありません。
この場合、A の作成者は次のコマンドを実行できます。
npmシュリンクラップ
これにより npm-shrinkwrap.json、これは次のようになります。
{
"名前": "A",
"バージョン": "1.1.0",
"依存関係": {
"B": {
"バージョン": "1.0.1",
"から": "B@^1.0.0",
"解決済み": "https://registry.npmjs.org/B/-/B-1.0.1.tgz",
"依存関係": {
"C": {
"バージョン": "1.0.1",
"from": "org/C#v1.0.1",
"resolved": "git://github.com/org/C.git#5c380ae319fc4efe9e7f2d9c78b0faa588fd99b4"
}
}
}
}
}
シュリンクラップ コマンドは、現在の内容に基づいて依存関係をロックダウンしました。
インストールされた node_modules。 インストール動作は次のように変更されます。
1. シュリンクラップで記述されたモジュールツリーが再現されます。 これは、
ファイルに記述されている構造。場合は、「解決済み」で参照される特定のファイルを使用します。
利用可能ではない場合は、「バージョン」を使用して通常のパッケージ解像度に戻ります。
2. ツリーが探索され、不足している依存関係があれば通常の方法でインストールされます。
使い方 シュリンクラップ パッケージ
シュリンクラップされたパッケージを使用することは、他のパッケージを使用することと何ら変わりません。 npm
install 手動で作成するか、依存関係を追加します package.json ファイルと npm install ボーマンは
建物 シュリンクラップ パッケージ
既存のパッケージをシュリンクラップするには:
1。 実行 npm install パッケージルート内で、すべての最新バージョンをインストールします
依存関係。
2. パッケージがこれらのバージョンで期待どおりに動作することを検証します。
3。 実行 npm 収縮包装追加 npm-shrinkwrap.json git にアクセスし、パッケージを公開します。
シュリンクラップされたパッケージ内の依存関係を追加または更新するには:
1。 実行 npm install パッケージルート内で、すべての最新バージョンをインストールします
依存関係。
2. 依存関係を追加または更新します。 npm install - 保存する 新規または更新された各パッケージ
個別に更新するには package.json そしてシュリンクラップ。 必ず次のとおりであることに注意してください。
インストールするために明示的に名前を付けます: 実行中 npm install 引数なしで
既存のシュリンクラップを再生産するだけです。
3. パッケージが新しい依存関係で期待どおりに動作することを検証します。
4. 新しいものをコミットする npm-shrinkwrap.jsonをクリックしてパッケージを公開します。
古い npm help を使用すると、利用可能な新しいバージョンの依存関係を表示できます。
その他 Notes
シュリンクラップ ファイルはパッケージのファイルと一致している必要があります。 package.json ファイルにソフトウェアを指定する必要があります。 npm 収縮包装
必要な依存関係がまだインストールされていない場合は失敗します。
実際には機能しないシュリンクラップ。 同様に、次の場合もコマンドは失敗します。
無関係なパッケージ (によって参照されていない) package.json)、それは次のことを示すためです
package.json 不正解です。
Since npm 収縮包装 運用環境での使用のために依存関係をロックダウンすることを目的としています。
開発依存関係 明示的に設定しない限り含まれません --dev 走るときに旗を立てる
npm 収縮包装。 インストールされている場合 開発依存関係 が除外されると、npm は警告を出力します。
デフォルトでモジュールとともにインストールされるようにしたい場合は、追加することを検討してください。
〜へ 依存関係 を代わりにお使いください。
シュリンク包装されたパッケージ A がシュリンク包装されたパッケージ B に依存している場合、B のシュリンク包装は適用されません。
A のインストールの一部として使用されます。ただし、A のシュリンクラップは次のように構成されているため、
B の有効なインストールとすべての依存関係、B の内容を再帰的に指定します。
シュリンクラップは A のシュリンクラップに暗黙的に含まれます。
注意事項
パッケージに含まれる特定のバイトをロックダウンしたい場合、たとえば
デプロイメントまたはビルドを再現できるという確信が 100% ある場合は、確認する必要があります。
依存関係をソース管理に組み込むか、検証できる他のメカニズムを追求します。
バージョンではなくコンテンツです。
onworks.net サービスを使用してオンラインで npm-shrinkwrap を使用する