回答:
ローカルモジュールディレクトリ:
$ 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-directoryIS../location-of-your-packages-root-directory/src/index.js