問題タブ [npm-shrinkwrap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
2614 参照

npm - シュリンクラップ、npm-lockdown、または npm-seal をいつ使用するか

私はcomposer. 私はgulp(など)ビルドプロセスに取り掛かり、学習nodeと使用方法を進めてnpmいます。

のようなマニフェストがデフォルトで含まれていないのは非常に奇妙です (これもcomposerバックグラウンドから来ています)。composer.lockそうは言っても、[shrinkwrap]、[npm-lockdown]、および [npm-seal] に関するドキュメントを読んでいます。...そして、ドキュメントを読めば読むほど、どちらを選択すべきか混乱します (誰もが自分のやり方が最善の方法だと考えています)。私が気付いた問題の 1 つは、npm-seal4 年とnpm-lockdown8 か月間変更されていないことnpmです。

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

PS: それぞれの最も基本的な実装例を含めれば、Brownie は指摘します。;)

0 投票する
1 に答える
2623 参照

node.js - 同じサーバー上の複数のワークスペースに共有 npm node_modules/ を使用する

私たちの Jenkins/CI サーバーは、node/js プロジェクトのために 1 日に何百ものビルドを実行します。完全にクリーンなワークスペースで各ビルドを実行できるようにしたいと考えています。ただし、このnpm installステップには 10 分以上かかる場合があり、これは遅すぎます。npm install代わりに、npm の依存関係は少数のビルド (全ビルドの約 1%) でのみ変更されるため、変更のたびに 1 回だけ実行したいと思いnpm-shrinkwrap.jsonます (ビルドごとに md5sum を確認してください)。シュリンクラップ ファイルが変更されていない場合は、キャッシュされたnode_modules/ディレクトリを使用します。

この計画は、キャッシュされた をコピーすれば十分に機能しますnode_modules/が、その操作でも最大 1 分かかる場合があります。ビルド時間をさらに最適化するために、 cached にシンボリック リンクできるようにしたいと考えていnode_modules/ます。これにより、全体的なビルド パフォーマンスが大幅に向上するはずです。

ただし、依存関係ツリーの複数のレベルに依存関係が存在する場合、キャッシュのパスへの単純なシンボリック リンクは機能しません。gulp例として、最上位プロジェクトは と の両方に依存していgulp-utilます。最上位の依存関係も に依存しgulp-utilます。の後、npm installgulp-util最上位にインストールされますが、 にはインストールされnode_modules/ませんnode_modules/gulp/node_modules

依存関係がローカル ワークスペース (つまり、実際のディレクトリ) に存在する場合、適切なモジュールが見つかるまで、inside/path/to/workspace/node_modules/のインスタンスは (私が思うに) 依存関係ツリーを再帰します。つまり、 を探し始めて何も見つからず、次に を調べ、適切なモジュールを見つけ、それをインポートして先に進みます。require('gulp-util')node_modules/gulpgulp-util/path/to/workspace/node_modules/gulp/node_modules/gulp-util/path/to/workspace/node_modules/gulp-util

ただし、これがシンボリック リンクの場合、次のようなエラーが発生します。

これは他のバージョンと同じことをしようとしていると思いますが、なぜ見つからないのかわかりませんgulp-util。で検索して/path/to/workspace/node_modules/gulp-util/path/to/cache/gulp-util、モジュールを見つけてインポートできるはずです。

モジュールを手動でインストールしてこれを解決しようとしましたgulp/node_modules/gulp-utilが、このようなエラーが多数発生し、ビルド サーバーでこれを手動で処理することは不可能です。このタイプの依存関係を検索してインストールするコードを書くことは可能ですが、それは間違っているように感じます。

npm には、そのようなワークフローをサポートする何らかの方法が必要ですよね? 明らかな何かが欠けていますか?ドキュメンテーションで何かを詳しく説明しましたか?

0 投票する
1 に答える
25 参照

node.js - npmでどの依存関係が導入されているかを確認するには?

package.jsonアプリのすべての直接的な依存関係を一覧表示します。whilenpm-shrinkwrap.jsonはすべての依存関係を非常にフラットな形式でリストします (可能な限り、子の依存関係をルートの依存関係として配置するようです (?))

これらの依存関係を見て、どれがどれを導入したかを知りたいので、多くの重要でない依存関係を引きずっているいくつかの重要でない依存関係を削除できる可能性があります。

どうやってするか?

0 投票する
3 に答える
1609 参照

json - カスタム ファイルシステム ディレクトリから npm パッケージをオフラインで透過的にインストールする

編集者注: 質問の元のタイトルは「npm install を使用して、ローカル ディレクトリに保存されているノード モジュールをインストールする」でした。したがって、一部の既存の回答では、インストール プロセスの変更に基づくソリューションが提案されています。

これは簡単なことだとは思いますが、私はこの分野のことはまったく初めてなので、探し回って、本当に欲しいものではない答えを常に見つけた後、直接尋ねてみようと思いました。

現在、npm install を呼び出すディレクトリ FOO で実行されるプロセスがあります。ディレクトリ FOO には、package.json と npm-shrinkwrap.json ファイルが含まれており、モジュール (この場合は bluebird、extend、および mysql ですが、実際には関係ありません) とバージョンを指定します。これはすべて完全に正常に機能します。

しかし今は、インターネットにアクセスしてモジュールを取得する代わりに、モジュールをローカル ディレクトリ BAR に保存し、foo のプロセスで npm を使用してそこからモジュールをインストールしたいと考えています。それらを FOO に永続的に保存することはできませんが、制御できない理由で BAR に保存することはできます。これが比較的単純であることはわかっていますが、適切なコマンドのセットを取得できないようです。助けてくれてありがとう。

0 投票する
1 に答える
495 参照

node.js - 「npm link」で作成されたシンボリックリンクノードモジュールをシュリンクラップするには?

一度に 2 つのリポジトリで作業します。一方は他方に依存します (package.json依存関係にリストされています)。

そのため、両方のモジュールで同時に作業するためにnpm link ..\theOneinを使用しています。otherその結果、あるモジュールの変更を別のモジュールでテストできます。問題は、npm shrinkwrapこのotherモジュールで実行する場合です。次のようなエラーが生成されます。

npm ERR! extraneous C:\other\node_modules\theOne\node_modules\{xxxx}

{xxxx}npm には関係のないものとして表示される開発依存関係です。

モジュールを別のモジュールへのシンボリックリンクでシュリンクラップすることに成功した人はいますか?

注意:

  • npm 3.10.3
  • ノード 6.3.0
0 投票する
1 に答える
193 参照

node.js - カスタムの依存関係を持つ node.js プロジェクトを出荷する

node.js プロジェクトのネストされた依存関係の問題をいくつか修正しました (依存関係は npm によって管理されます)。これらの修正は保留中のプル リクエストであるため、公開されていません。私のプロジェクトでそれらを使用する最良の方法は何ですか?

npm linkライブラリの固定バージョン内で、次にnpm link library-nameプロジェクト内で、npm に固定バージョンを強制的に使用させることができることを知っています。library-nameこのアプローチは機能しますが、好きではないマシンにグローバルにインストールされます。

メインプロジェクトのリポジトリでローカルに使用することは可能ですか?プロジェクトに強制的に使用させ、実行しないでくださいnpm link

0 投票する
1 に答える
188 参照

npm - npm Shrinkwrap には localhost へのパスが含まれています

実行後npm shrinkwrap、localhost への参照が多数あることがわかりました。

これらの参照は未加工の node_modules にもあることがわかります。

したがって、これは、インストール時に多くのフェッチおよび再試行エラーが発生していることを意味します。

これは正しくありません。これを修正する最善の方法は何ですか?