フラットNodeLangモジュールは唯一の方法ではありません
4810 ワード
この記事はPNPMの古いバージョンを扱います.記事の更新されたバージョンのためにgo here .
の新しいユーザーpnpm の奇妙な構造についてよく尋ねてください
では、なぜPNPMの
ディレクトリ全体を見ることができますhere .
そして、これはあなたが
あなたはそれをチェックすることができますhere .
では、すべての依存関係はどこですか?中には1つだけのフォルダがあります
何が中にあるか見ましょう
トリックは
こちらnode_modules/.registry.npmjs.org/express/4.16.3/node_modules/express .
ので、今私たちの目的を知っている
では、次の場所を見てみましょう
それは詐欺ですか.まだ欠けている
すべての依存関係
あなたが見ることができるように それは完全にノードです.互換性の パッケージは、依存性をうまくグループ化します 構造は少しmore complex ピア依存関係を持つパッケージに対しては、そのアイデアは同じです.Symlinkを使用して、フラットディレクトリ構造の入れ子を作成します.
試してみたい場合はpnpm , NPMで簡単にインストールできます.
の新しいユーザーpnpm の奇妙な構造についてよく尋ねてください
node_modules
pnpmが作成します.なぜフラットではないのですか?すべてのサブ依存関係はどこですか?I am going to assume that readers of the article are already familiar with flat
node_modules
created by npm and Yarn. If you don't understand why npm 3 had to start using flatnode_modules
in v3, you can find some prehistory in Why should we use pnpm?.
では、なぜPNPMの
node_modules
大荷持ちが小荷持ちに銭借りる?つのディレクトリを作りましょうnpm install express
その中でpnpm install express
もう一方で.ここでは、最初のディレクトリに何を得るの先頭ですnode_modules
:ディレクトリ全体を見ることができますhere .
そして、これはあなたが
node_modules
PNPMによって作成されます:あなたはそれをチェックすることができますhere .
では、すべての依存関係はどこですか?中には1つだけのフォルダがあります
node_modules
呼ばれる.registry.npmjs.org
と呼ばれるシンボリックリンクexpress
. まあ、インストールのみexpress
, これはアプリケーションがアクセスしなければならない唯一のパッケージですRead more about why pnpm's strictness is a good thing here
何が中にあるか見ましょう
express
:express
がないnode_modules
? すべての依存関係はexpress
?トリックは
express
はシンボリックリンクです.ノード.jsは依存性を解決します.そして、それは彼らの本当の場所を使用します.しかし、どこの本当の場所はexpress
, お願いします.こちらnode_modules/.registry.npmjs.org/express/4.16.3/node_modules/express .
ので、今私たちの目的を知っている
.registry.npmjs.org/
フォルダ..registry.npmjs.org/
すべてのパッケージを平らなフォルダー構造に格納するので、すべてのパッケージがこのパターンで指定されたフォルダーで見つけることができます..registry.npmjs.org/<name>/<version>/node_modules/<name>
このフラットな構造は、ネストされたnode_modules
NPMのv 2によって作成されたパッケージは、フラットとは異なり分離node_modules
NPM v 3 , 4 , 5 , 6によって作成されます.では、次の場所を見てみましょう
express
:それは詐欺ですか.まだ欠けている
node_modules
! PNPMの第2のトリックnode_modules
構造体はパッケージの依存関係が依存するパッケージの本当の位置にある同じディレクトリレベルにあることです.したがって、express
でない/express/4.16.4/node_modules/express/node_modules/
でも/express/4.16.4/node_modules/ :すべての依存関係
express
は、node_modules/.registry.npmjs.org/
. 依存性の配置express
つのレベルのアップは、円形のシンボリックリンクを回避することができます.あなたが見ることができるように
node_modules
最初は構造が異常らしい試してみたい場合はpnpm , NPMで簡単にインストールできます.
npm i -g pnpm
. それからNPMの代わりに実行してください.pnpm install foo bar
.Reference
この問題について(フラットNodeLangモジュールは唯一の方法ではありません), 我々は、より多くの情報をここで見つけました https://dev.to/zkochan/flat-nodemodules-is-not-the-only-way-mo2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol