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 installsonra 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 linkkez klasöre karşı (genel bir sembolik bağlantı oluşturmak için) çalıştırmanız ve sonra npm link package-nameprojenin 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 linkSonuç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.jsonBenim 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 tmpklasöre koyabilirsiniz consumer-project:
package.json:"dependencies": {
"my-package": "file:/./tmp/my-package-1.3.3.tar.gz"
}
Installpaketler:npm installveya npm iveyayarn
consumer-project's node_modulesklasörünüzde mevcut olmalıdır .İyi şanslar...
Bu yaklaşımlardan hiçbiri ( npm linkveya package.jsondosya 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 mymoduleve yüklendiğinde require('foo'), düğüm mymodulesembolik 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 mymoduledosya bağımlılığı sözdizimi kullanıldığında package.json. İkisini de yapmanın bir yolunu bulamadım maalesef :(
NODE_PATHolan 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 mymodulebulmayı sağlar foo.
Önceki insanlar yanıt verdiği gibi npm --save ../location-of-your-packages-root-directory. ../location-of-your-packages-root-directoryAncak çalışması için iki şey olması gerekir.
1) package.jsonbu dizinde
2) mainmülkiyet package.jsonkurmak ve olmalıdır çalışma ig "main": "src/index.js",eğer için giriş dosyası ../location-of-your-packages-root-directoryDİR../location-of-your-packages-root-directory/src/index.js