2016-01-10 11 views
6

私は、背景よりもはるかによく知っているcomposerから来ています。私はgulp(など)をビルドプロセスと学習のために行くnodeと私は行くようにnpmを使用する方法です。シュリ​​ンクラップ、npm-ロックダウン、またはnpmシールを使用する場合

デフォルトではcomposer.lockのようなマニフェストが含まれていないことは非常に奇妙です(また、composerの背景から来ています)。それを言って、私は[shrinkwrap]、[npm-lockdown]、[npm-seal]に関する文書を読んできました。 ...そして私が読んだドキュメントが多くなればなるほど、私は誰が自分の道が最良の方法だと思っているのか、もっと混乱しています。私が気付いた問題の一つは、npm-sealは8ヶ月で4年npm-lockdownに変更されていないということです - このすべては、それがnpmの最新バージョンでは必要ありませんですので、この場合は疑問に私をリード...

  1. それぞれの利点/欠点は何ですか?
  2. どのような場合、私はプロジェクトAで1つを使用しますが、プロジェクトBでは別のものを使用しますか?
  3. それぞれがどのように開発ワークフローに影響しますか?

PS:それぞれに最も基本的な実装例が含まれていればブラウニーポイント。 ;)

+0

これもあります... https://github.com/uber/npm-shrinkwrap hah –

+0

+ https://github.com/JamieMason/shrinkpack –

答えて

6

npm shrinkwrapは、依存関係をロックする最も標準的な方法です。そしてyes、npm installはデフォルトでは作成しません。これは残念ですが、npm作成者が間違いなく変更する必要があります。

npm-lockdownnpm shrinkwrapと同じ事をやろうとしている、npm-lockdownが優れている二つのマイナーなポイントがあります。それは、より良いオプションの依存関係を処理し、それがパッケージのチェックサムを検証します。

https://www.npmjs.com/package/lockdown#related-tools

これらの両方の機能は私にとってはあまり関係がないようです。私はnpm shrinkwrapに非常に満足しています:例えば、特定のパッケージを特定のバージョンでアップロードすると、npmjsはそれが不変のままであることを保証します - shaチェックサムがあまり熱くないことを確認します。

sealは、npm shrinkwrapと一緒に使用することを意味します。それは 'チェックサムチェック'の面を追加します。それは放棄され、かなり生のように見えます。

2

良い質問 - これは事実上の方法であるNPM's docsのため、shrinkwrap以外はすべてスキップします。

npm-shrinkwrap.jsonファイルは、お使いのlockファイルに似ていますが、他のすべてのパッケージマネージャーで使用されているファイルに似ていますが、NPMでは同じパッケージのさまざまなバージョンを別々に再生できます。木の異なるレベルでnode_modules。互いの親子である2つのプロジェクトが同じバージョンを使用している場合、NPMはバージョンのみを親にコピーし、子はツリーを走査してパッケージを検索します。

ベストプラクティスあなたがコミットしてプッシュするだけではあるときnpm shrinkwrapを実行し、あなたの直接の依存関係のためpackage.jsonを更新npm installを実行して、開発中のものが機能していることを確認することです。 注:アクティブ開発中にnpm installを実行する前に必ずrm npm-shrinkwrap.jsonにしてください。直接の依存関係が変更された場合は、ロックではなくpackage.jsonを使用します。 .gitignoreにもnode_modulesまたはそれと同等のものをソース管理システムに含めます。次に、プロジェクトを展開して実行するときは、通常のようにnpm installを実行します。 npmがnpm-shrinkwrap.jsonファイルを見つけた場合、そのモジュールを使用してロックされたすべてのモジュールを再帰的にプルし、プロジェクトとすべての依存プロジェクトの両方でpackage.jsonを無視します。

1

npm installがダウンロードしたtarballをチェックし、それらをリポジトリにバンドルする前に、最後にnpm-shrinkwrap.jsonをローカルバンドルを指すように書き直す前に、有用です。

このようにして、プロジェクトは完全にロックダウンされ、完全にオフラインで利用でき、多くはをインストールするのが早くなります。

関連する問題