Öyle, böyle bir şey yapmak istiyorum npm install
da yükler package.json
arasında ../somelocallib
bağımlılıklarından veya daha da önemlisi.
"dependencies": {
"express": "*",
"../somelocallib": "*"
}
Öyle, böyle bir şey yapmak istiyorum npm install
da yükler package.json
arasında ../somelocallib
bağımlılıklarından veya daha da önemlisi.
"dependencies": {
"express": "*",
"../somelocallib": "*"
}
Yanıtlar:
Bu özellik, npm'nin 2.0.0 sürümünde uygulanmıştır . Misal:
{
"name": "baz",
"dependencies": {
"bar": "file:../foo/bar"
}
}
Aşağıdaki yollardan herhangi biri de geçerlidir:
../foo/bar
~/foo/bar
./foo/bar
/foo/bar
Yerel paket olacaktır kopyalanan için önek (./node-modules
).
Normalde somelocallib
bağımlılık olarak koyun package.json
:
"dependencies": {
"somelocallib": "0.0.x"
}
Ardından run npm link ../somelocallib
ve npm, üzerinde çalıştığınız sürümü bir sembolik bağlantı olarak yükleyecektir .
app@0.0.1 /private/tmp/app
└── somelocallib@0.0.1 -> /private/tmp/somelocallib
Referans: bağlantı (1)
npm dedup
bu sorunu gidermek için. npmjs.org/doc/cli/npm-dedupe.html
npm install <folder>
açıklama diyor Paket projeye mevcut projede bir sembolik bağlantı olarak yükleyin.
Artık package.json
doğrudan yerel Düğüm modülü kurulum yollarını belirlemek mümkündür . Dokümanlardan:
Yerel Yollar
Sürüm 2.0.0'dan itibaren, paket içeren yerel bir dizine yol sağlayabilirsiniz. Yerel yollar
npm install -S
veya aşağıdakinpm install --save
formlardan herhangi biri kullanılarak kaydedilebilir :../foo/bar ~/foo/bar ./foo/bar /foo/bar
bu durumda onlar göreli bir yol normalize edilecek ve ilave
package.json
. Örneğin:{ "name": "baz", "dependencies": { "bar": "file:../foo/bar" } }
Bu özellik, yerel çevrimdışı geliştirme ve harici bir sunucuya çarpmak istemediğiniz yerlerde npm kurulumu gerektiren testler oluşturmak için yararlıdır, ancak paketleri genel kayıt defterine yayınlarken kullanılmamalıdır.
"bar": "file:///home/user/src/foo/bar"
node:onbuild
görüntüler yalnızca geçerli dizini kopyalayıp, böylece herhangi bir şeyi dışarıda bıraktığından, düğüm uygulamanızı dolaştırmaya çalıştığınızda ve / veya her türlü soruna neden olur ../foo
.
npm install
ya da LAN üzerindeki başka bir git deposuna sahip olabilir mi? Yukarıda ve npm install git + ssh denediğimde, node_modules dizinine bakmak ve üst düzey paketi nasıl yüklüyorum da git + ssh üzerinden gitmeye çalışmak gibi görünmüyor.
Bu benim için çalışıyor.
Aşağıdakileri package.json dosyanıza yerleştirin
"scripts": {
"preinstall": "npm install ../my-own-module/"
}
.gitignore
Modül klasöründe kaldırıldı , oluşturuldu .npmignore
ve ilk çalıştırdığımda 777 dışında tüm klasörlere özyineli olarak uygulandı node_modules
. Ama evet, bağımlılıkları kurdu. Npm 1.4.14 sürümünü kullanma.
"dependencies": { "my-own-module": "file:../my-own-module" }
?
npm link
yapmanız gerekmemesidir npm install
.
Modülünüzü sürüm kontrolüne göre kontrol ettiğiniz ve npm bağlantısını hatırlayan geliştiricilere güvenmek istemediğiniz için bunu daha da otomatik hale getirmek istiyorsanız, bunu package.json "komut dosyaları" bölümüne ekleyebilirsiniz:
"scripts": {
"postinstall": "npm link ../somelocallib",
"postupdate": "npm link ../somelocallib"
}
Bu kibirli olmanın ötesinde, ama "işliyor" gibi görünüyor. Bu npm sorunundan ipucu aldım: https://github.com/npm/npm/issues/1558#issuecomment-12444454
postinstall
ve postupdate
yerine preinstall
ve preupdate
?
Yerel bağımlılıkları şu şekilde ekleyeceksiniz:
npm install file:src/assets/js/FILE_NAME
NPM'den package.json'a ekleyin:
npm install --save file:src/assets/js/FILE_NAME
Doğrudan böyle paket.json ekleyin:
....
"angular2-autosize": "1.0.1",
"angular2-text-mask": "8.0.2",
"animate.css": "3.5.2",
"LIBRARY_NAME": "file:src/assets/js/FILE_NAME"
....
İşte ana proje için kullanacağınız package.json:
"dependencies": {
"express": "*",
"somelocallib": "file:./somelocallib"
}
Orada ./somelocallib
kütüphane klasörüne referanstır ana proje package.json için orantılı bir şekilde .
Referans: https://docs.npmjs.com/files/package.json#local-paths
Kütüphane bağımlılıklarınızı yönetin.
Koşmaya ek olarak koşmanız npm install
gerekecek (cd node_modules/somelocallib && npm install)
.
Bu, NPM'de bilinen bir hatadır.
Referans: https://github.com/npm/npm/issues/1341 (daha güncel bir referans arıyor)
Kaptanınızı package.lock
ve somelocallib/package.lock
kaynak kod yöneticinizi kontrol edin.
Ardından Dockerfile dosyasında şunları kullanın:
FROM node:10
WORKDIR /app
# ...
COPY ./package.json ./package-lock.json ./
COPY somelocallib somelocallib
RUN npm ci
RUN (cd node_modules/zkp-utils/ && npm ci)
# ...
(cd A && B)
İşlemlerimi yapmak için parantez kullanıyorum .
Bunun npm install ../somelocallib
işe yaradığını biliyorum .
Ancak, soruda gösterdiğiniz sözdiziminin işe yarayıp yaramayacağını bilmiyorum package.json
...
Ne yazık ki, doc URL'den yalnızca bağımlılık olarak bahsediyor gibi görünüyor.
file:///.../...tar.gz
Sıkıştırılmış bir yerel lib'i işaret etmeye çalışın ... ve çalışıp çalışmadığını bize bildirin.
Bu benim için çalıştı: ilk olarak, npm dizinlerinin doğru kullanıcıya sahip olduğundan emin olun
sudo chown -R myuser ~/.npm
sudo chown -R myuser /usr/local/lib/node_modules
Sonra paketinizdeki .json dizini bağlayın
"scripts": {
"preinstall": "npm ln mylib ../../path/to/mylib"
},
"dependencies": {
"mylib" : "*"
}
npm install
.
Aslında, npm 2.0 itibariyle, şimdi yerel yollar desteği var ( buraya bakın ).
Meraklı ..... en azından Windows (benim npm 3. bir şey) Yapmam gereken:
"dependencies": {
"body-parser": "^1.17.1",
"module1": "../module1",
"module2": "../module2",
Bunu yaptığımda npm install ../module1 --save
, belgelere göre değil, mutlak yollarla sonuçlandı.
Biraz daha berbat ettim ve bunun ../xxx
yeterli olduğunu belirledim .
Özellikle, yerel düğüm modülleri d: \ build \ nodeApp d: \ build \ module1, d: \ build \ module2 ve benim düğüm projesi (uygulama) demek için teslim aldım.
'Kurmak' için, ben:
d:\build\module1> rmdir "./node_modules" /q /s && npm install
d:\build\module2> rmdir "./node_modules" /q /s && npm install
d:\build\nodeApp> rmdir "./node_modules" /q /s && npm install
module1's package.json, "module2" bağımlılığına sahiptir: "../module2"; modül2'nin yerel bağımlılığı yoktur; nodeApp'ın "module1": "../module1" ve "module2": "../module2" bağımlılıkları vardır.
Tüm 3 klasör (modül1, modül2 ve nodeApp) aynı seviyede bulunduğundan bunun benim için çalışıp çalışmadığından emin değilim .......
Tam bir yerel kalkınma için iki adım: