Yanıtlar:
Gönderen npm bağlantı belgelerinde :
Yerel modül dizininde:
$ cd ./package-dir
$ npm link
Modülü kullanmak için projenin dizininde:
$ cd ./project-dir
$ npm link package-name
Veya tek seferde göreli yollar kullanarak:
$ cd ./project-dir
$ npm link ../package-dir
Bu, başlık altında iki komutun kullanılmasına eşdeğerdir.
npm link
, dış bağımlılıkların ikinci bir örneğini yaratacağını unutmayın . Eğer A paketine ihtiyacınız varsa B ve C'ye, B'ye C'ye ihtiyacınız varsa B'yi bağlamak A uygulamasının iki C
sadece bir <folder>
argüman sağlıyorsanız npm install
, argüman paket adı yerine yerel klasöre işaret etmelidir:
npm install /path
rm -rf node_modules
önce ve npm install
sonra yapmak güzel .
Aynı kişi tarafından sorulup yanıtlandığından beri, bir npm bağlantısı ekleyeceğim , alternatif olarak bir .
dokümanlardan:
Bu, kendi eşyalarınızı kurmak için kullanışlıdır, böylece üzerinde tekrar çalışmanıza gerek kalmadan üzerinde çalışabilir ve tekrar tekrar test edebilirsiniz.
cd ~/projects/node-bloggy # go into the dir of your main project
npm link ../node-redis # link the dir of your dependency
[Düzenle] NPM 2.0'dan itibaren package.json içinde yerel bağımlılıkları beyan edebilirsiniz
"dependencies": {
"bar": "file:../foo/bar"
}
npm link
kez klasöre karşı (genel bir sembolik bağlantı oluşturmak için) çalıştırmanız ve sonra npm link package-name
projenin klasörü içinde (projenizde global bir sembolik bağlantı kullanmak için) çalıştırmanız gerekir. Aşağıdaki cevap doğru cevaptır.
file:
yaklaşımı kullanarak ) uygulamam ve yerel modülün bir bağımlılığı paylaşmasına izin verdi. npm link
Sonuçta yaptığım test , bağımlılığın bir singleton olarak kullanılması gerektiğinde işleri bozan yinelenen bir bağımlılıkla sonuçlandı.
npm pack
+ package.json
Benim için işe yarayan buydu:
module project
, yürütün npm pack
:Bu bir <package-name>-<version>.tar.gz
dosya oluşturur.
consumer project
İdeal olarak, bu tür tüm dosyaları kökünüzdeki bir tmp
klasöre koyabilirsiniz consumer-project
:
package.json
:"dependencies": {
"my-package": "file:/./tmp/my-package-1.3.3.tar.gz"
}
Install
paketler:npm install
veya npm i
veyayarn
consumer-project's node_modules
klasörünüzde mevcut olmalıdır .İyi şanslar...
Bu yaklaşımlardan hiçbiri ( npm link
veya package.json
dosya bağımlılığı), yerel modülde yalnızca projenizin kapsamında yüklemek istediğiniz eş bağımlılıkları varsa işe yaramaz.
Örneğin:
/local/mymodule/package.json:
"name": "mymodule",
"peerDependencies":
{
"foo": "^2.5"
}
/dev/myproject/package.json:
"dependencies":
{
"mymodule": "file:/local/mymodule",
"foo": "^2.5"
}
Bu senaryoda, npm setleri yukarı myproject
's node_modules/
böyle:
/dev/myproject/node_modules/
foo/
mymodule -> /local/mymodule
Düğüm yüklendiğinde mymodule
ve yüklendiğinde require('foo')
, düğüm mymodule
sembolik bağlantıyı çözer ve sonra yalnızca bulamadığı /local/mymodule/node_modules/
(ve atalarını) arar foo
. Bunun yerine, düğümün içine bakmasını istiyoruz /local/myproject/node_modules/
, çünkü projemizin nereden geldiğini ve nereden geldiğinifoo
kurulduk.
Yani, biz ya düğümü anlatmak için bir yol gerekir değil bu sembolik çözmek ararken foo
, ya da biz bir yüklemeye UÖM'yi anlatmak için bir yol gerekir kopyasını ait mymodule
dosya bağımlılığı sözdizimi kullanıldığında package.json
. İkisini de yapmanın bir yolunu bulamadım maalesef :(
NODE_PATH
olan node_modules/
yere işaret edecek bir geçici çözüm buldum foo
. Yani yukarıdaki durum için, bu olurdu: NODE_PATH=/dev/myproject/node_modules/
Bu mymodule
bulmayı sağlar foo
.
Önceki insanlar yanıt verdiği gibi npm --save ../location-of-your-packages-root-directory
. ../location-of-your-packages-root-directory
Ancak çalışması için iki şey olması gerekir.
1) package.json
bu dizinde
2) main
mülkiyet package.json
kurmak ve olmalıdır çalışma ig "main": "src/index.js",
eğer için giriş dosyası ../location-of-your-packages-root-directory
DİR../location-of-your-packages-root-directory/src/index.js