回答:
ローカルモジュールディレクトリ:
$ cd ./package-dir
$ npm link
モジュールを使用するプロジェクトのディレクトリ:
$ cd ./project-dir
$ npm link package-name
または、相対パスを使用して一度に:
$ cd ./project-dir
$ npm link ../package-dir
これは、上記の2つのコマンドを内部で使用することと同じです。
npm link
、外部依存関係の2番目のインスタンスが作成されることに注意してください。あなたは、パッケージAの必要性のBとCを持っているのであれば、Bを結ぶBの必要性C.は、アプリケーションAはCの2つのインスタンス持つことになります
に1つの<folder>
引数を指定するだけでnpm install
、引数はパッケージ名ではなくローカルフォルダーを指す必要があります。
npm install /path
rm -rf node_modules
前とnpm install
後がいいです。
同じ人から質問と回答があったので、代わりにnpmリンクを追加します。
ドキュメントから:
これは、独自のものをインストールするのに便利です。そのため、継続的に再構築しなくても、作業を繰り返してテストできます。
cd ~/projects/node-bloggy # go into the dir of your main project
npm link ../node-redis # link the dir of your dependency
[編集] NPM 2.0以降では、package.jsonでローカル依存関係を宣言できます
"dependencies": {
"bar": "file:../foo/bar"
}
npm link
(グローバルシンボリックリンクを作成するために)フォルダーに対して1回実行し、次にnpm link package-name
(プロジェクトでグローバルシンボリックリンクを使用するために)プロジェクトのフォルダー内で実行する必要があります。以下の答えは正しい答えです。
file:
アプローチを使用)では、アプリとローカルモジュールが依存関係を共有できました。私のテストのnpm link
結果、依存関係が重複しました。依存関係をシングルトンとして使用する必要がある場合は、依存関係が壊れます。
npm pack
+ package.json
これは私のために働いたものです:
module project
、次を実行しnpm pack
ます。これで<package-name>-<version>.tar.gz
ファイルが作成されます。
consumer project
理想的にtmp
は、consumer-project
ルート内のフォルダーにそのようなファイルをすべて置くことができます:
package.json
:"dependencies": {
"my-package": "file:/./tmp/my-package-1.3.3.tar.gz"
}
Install
パッケージ:npm install
またはnpm i
またはyarn
consumer-project's node_modules
フォルダーで使用できるようになります。幸運を...
ローカルモジュールに、プロジェクトのスコープにのみインストールするピア依存関係がある場合、これらのアプローチ(npm link
またはpackage.json
ファイル依存関係)はどちらも機能しません。
例えば:
/local/mymodule/package.json:
"name": "mymodule",
"peerDependencies":
{
"foo": "^2.5"
}
/dev/myproject/package.json:
"dependencies":
{
"mymodule": "file:/local/mymodule",
"foo": "^2.5"
}
このシナリオでは、npmはを次myproject
のnode_modules/
ように設定します。
/dev/myproject/node_modules/
foo/
mymodule -> /local/mymodule
nodeが読み込まれmymodule
、それが実行されるとrequire('foo')
、nodeはmymodule
シンボリックリンクを解決し、見つからない/local/mymodule/node_modules/
(およびその祖先)のみを探しfoo
ます。代わりに、/local/myproject/node_modules/
私たちがプロジェクトを実行している場所でfoo
あり、インストールされている場所であるため、nodeにを表示させる必要があります。
だから、我々には、いずれかのノードを伝える方法を必要としないこのシンボリックリンクを解決するために探しているときfoo
、または我々はインストールするには、NPMを指示する方法必要なコピーのmymodule
ファイルの依存関係の構文を使用しているときにpackage.json
。残念ながら:(
NODE_PATH
ているnode_modules/
場所を指すように設定するという回避策を見つけましたfoo
。したがって、上記の場合のために、それはこのようになります: NODE_PATH=/dev/myproject/node_modules/
許可することをmymodule
発見しますfoo
。
以前の人々が答えたようにnpm --save ../location-of-your-packages-root-directory
。../location-of-your-packages-root-directory
しかし、それが機能するためには二つのものを持っている必要があります。
1)package.json
そのディレクトリで
2)main
でプロパティpackage.json
を設定する必要があり、作業IG "main": "src/index.js",
場合のエントリファイル../location-of-your-packages-root-directory
IS../location-of-your-packages-root-directory/src/index.js