609

私はこのようなことをしたいので、さらに重要なことにその依存関係npm installもインストールします。package.json../somelocallib

"dependencies": {
    "express": "*",
    "../somelocallib": "*"
}
4

16 に答える 16

780

npm >= 2.0.0

この機能は、npm のバージョン 2.0.0 で実装されました。npm install -Sローカル パスは、またはを使用して保存できますnpm install --save。これらの形式のいずれかを使用します。

../foo/bar
~/foo/bar
./foo/bar
/foo/bar

package.json

{
  "name": "baz",
  "dependencies": {
    "bar": "file:../foo/bar"
  }
}

npm ls:

app@0.0.1 /private/tmp/app
└── somelocallib@0.0.1 -> /private/tmp/somelocallib

npm < 2.0.0

somelocallib通常どおりに依存関係として入れますpackage.json

"dependencies": {
  "somelocallib": "0.0.x"
}

次に実行すると、npm は作業中のバージョンをsymlink としてnpm link ../somelocallibインストールします。

参考:リンク(1)

于 2013-01-17T20:04:35.130 に答える
103

これは私にとってはうまくいきます。

package.json ファイルに以下を配置します

"scripts": {
    "preinstall": "npm install ../my-own-module/"
}
于 2014-01-29T13:44:28.570 に答える
36

モジュールをバージョン管理にチェックインしていて、開発者が npm リンクを覚えていることに依存したくないため、これをさらに自動化したい場合は、これを package.json の「scripts」セクションに追加できます。

"scripts": {
    "postinstall": "npm link ../somelocallib",
    "postupdate": "npm link ../somelocallib"
  }

これはハッキーを超えているように感じますが、「うまくいく」ようです。この npm issue からヒントを得ました: https://github.com/npm/npm/issues/1558#issuecomment-12444454

于 2013-11-12T12:07:49.290 に答える
6

ここ2020年、Windows 10で作業して、試してみました

"dependencies": {
    "some-local-lib": "file:../../folderY/some-local-lib" 
    ...
}

次に、npmインストールを行います。その結果、フォルダへのショートカットが に作成されnode-modulesます。これはうまくいきません。Windows がサポートするハード リンクが必要ですが、ハード シンボリック リンクを作成するには、Windows で何か特別なことを行う必要があります。

ハード リンクはあまり必要ないので、代わりに URL を使用してみました。

"dependencies": {
    "some-local-lib": "file:///D:\\folderX\\folderY\\some-local-lib.tar" 
     ....
}

そして、これはうまく機能します。
tar (ライブラリの build / dist フォルダーにあるものを tar する必要があります) はノード モジュールの実際のフォルダーに抽出され、他のすべてと同様にインポートできます。
明らかに tar 部分は少し面倒ですが、「some-local-lib」はライブラリであるため (とにかくビルドする必要があります)、ハード リンクを作成したりローカル npm をインストールしたりするよりも、この解決策を好みます。

于 2020-11-11T15:19:12.953 に答える
5

私はそれがうまくいくことを知っていnpm install ../somelocallibます。

ただし、質問で示した構文が機能するかどうかはわかりませんpackage.json...

残念ながら、docは依存関係として URL のみを言及しているようです。

を試しfile:///.../...tar.gzて、圧縮されたローカル ライブラリを指定して...動作するかどうか教えてください。

于 2013-01-18T16:20:52.127 に答える
3

これは私にとってはうまくいきました:最初に、npmディレクトリに正しいユーザーがいることを確認してください

sudo chown -R myuser ~/.npm
sudo chown -R myuser /usr/local/lib/node_modules

次に、package.jsonでディレクトリをリンクします

"scripts": {
 "preinstall": "npm ln mylib ../../path/to/mylib"
}, 
"dependencies": {
  "mylib" : "*"
}
于 2013-12-06T12:04:49.043 に答える
2

TypeScript で記述された一連のローカル依存関係を使用したかったのですが、ここでの回答はどれもうまくいきませんでした。npm install依存関係の構築を単に拒否します。

パッケージを依存関係としてマークせtsconfig.jsonにプロジェクトに追加するために使用する必要がありました。私のユースケースは、いくつかの依存関係が相互に依存しているという事実によってさらに複雑になり、それらすべてをローカル フォルダーから取得したいと考えました。

これが私の解決策です:

// tsconfig.json
{
  "compilerOptions": {
    "baseUrl": "./",
    "paths": {
      "@tiptap/*": [
        "tiptap/packages/*/src"
      ]
    }
  }
}

上記の例では、 という名前のローカル プロジェクト サブフォルダーがtiptap/あり、 には多くのパッケージがありますtiptap/packages/*。このオプションは、自分のファイルと 内のファイルの両方で、すべてのインポートを に"paths"書き換えます。@tiptap/foo./tiptap/packages/foo/srctiptap/

それは良い解決策ではありませんが、私にとってはうまくいった唯一のものです。

于 2021-12-01T18:50:06.583 に答える