Öyle, böyle bir şey yapmak istiyorum npm installda yükler package.jsonarasında ../somelocallibbağımlılıklarından veya daha da önemlisi.
"dependencies": {
"express": "*",
"../somelocallib": "*"
}
Öyle, böyle bir şey yapmak istiyorum npm installda yükler package.jsonarasında ../somelocallibbağı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 somelocallibbağımlılık olarak koyun package.json:
"dependencies": {
"somelocallib": "0.0.x"
}
Ardından run npm link ../somelocallibve 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 dedupbu 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.jsondoğ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 -Sveya aşağıdakinpm install --saveformlardan herhangi biri kullanılarak kaydedilebilir :../foo/bar ~/foo/bar ./foo/bar /foo/barbu 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:onbuildgö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 installya 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/"
}
.gitignoreModül klasöründe kaldırıldı , oluşturuldu .npmignoreve 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 linkyapmanı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
postinstallve postupdateyerine preinstallve 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 ./somelocallibkü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 installgerekecek (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.lockve somelocallib/package.lockkaynak 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 ../somelocallibiş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.gzSı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 ../xxxyeterli 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: