Saya ingin melakukan sesuatu seperti ini, sehingga npm install
juga menginstal package.json
dari ../somelocallib
atau lebih penting dependensinya.
"dependencies": {
"express": "*",
"../somelocallib": "*"
}
Saya ingin melakukan sesuatu seperti ini, sehingga npm install
juga menginstal package.json
dari ../somelocallib
atau lebih penting dependensinya.
"dependencies": {
"express": "*",
"../somelocallib": "*"
}
Jawaban:
Fitur ini diimplementasikan dalam versi 2.0.0 npm. Contoh:
{
"name": "baz",
"dependencies": {
"bar": "file:../foo/bar"
}
}
Salah satu jalur berikut ini juga valid:
../foo/bar
~/foo/bar
./foo/bar
/foo/bar
Paket lokal akan disalin ke awalan ( ./node-modules
).
Masukkan somelocallib
sebagai ketergantungan pada Anda package.json
seperti biasa:
"dependencies": {
"somelocallib": "0.0.x"
}
Kemudian jalankan npm link ../somelocallib
dan npm akan menginstal versi yang sedang Anda kerjakan sebagai symlink .
app@0.0.1 /private/tmp/app
└── somelocallib@0.0.1 -> /private/tmp/somelocallib
Referensi: tautan (1)
npm dedup
untuk memperbaiki masalah ini. npmjs.org/doc/cli/npm-dedupe.html
npm install <folder>
deskripsi mengatakan Instal paket di direktori sebagai symlink dalam proyek saat ini.
Sekarang dimungkinkan untuk menentukan jalur pemasangan modul Node lokal di Anda package.json
secara langsung. Dari dokumen:
Jalur Lokal
Pada versi 2.0.0 Anda dapat memberikan jalur ke direktori lokal yang berisi paket. Jalur lokal dapat disimpan menggunakan
npm install -S
ataunpm install --save
, menggunakan salah satu dari formulir ini:../foo/bar ~/foo/bar ./foo/bar /foo/bar
dalam hal ini mereka akan dinormalisasi ke jalur relatif dan ditambahkan ke Anda
package.json
. Sebagai contoh:{ "name": "baz", "dependencies": { "bar": "file:../foo/bar" } }
Fitur ini bermanfaat untuk pengembangan offline lokal dan membuat tes yang memerlukan penginstalan npm di mana Anda tidak ingin menekan server eksternal, tetapi tidak boleh digunakan saat menerbitkan paket ke registri publik.
"bar": "file:///home/user/src/foo/bar"
node:onbuild
gambar standar hanya menyalin direktori saat ini, dan dengan demikian tidak menyertakan apa pun di dalamnya ../foo
.
npm install
berasal dari atau repositori git lain di LAN? Ketika saya mencoba yang di atas dan menginstal npm dari git + ssh tampaknya untuk melihat di direktori node_modules dan tidak mencoba untuk pergi ke git + ssh meskipun itu adalah bagaimana saya menginstal paket tingkat atas.
Ini bekerja untuk saya.
Tempatkan yang berikut ini di file package.json Anda
"scripts": {
"preinstall": "npm install ../my-own-module/"
}
.gitignore
dalam folder modul, dibuat .npmignore
dan pertama kali saya menjalankannya diterapkan 777 secara rekursif pada semua folder kecuali node_modules
. Tapi ya, itu menginstal dependensi. Menggunakan npm versi 1.4.14.
"dependencies": { "my-own-module": "file:../my-own-module" }
?
npm link
adalah bahwa Anda tidak perlu melakukan npm install
setiap waktu untuk mendapatkan dependensi Anda yang terbaru.
Jika Anda ingin mengotomatiskan ini lebih lanjut, karena Anda memeriksa modul Anda ke dalam kontrol versi, dan tidak ingin bergantung pada dev yang mengingat tautan npm, Anda dapat menambahkan ini ke bagian package.json "script" Anda:
"scripts": {
"postinstall": "npm link ../somelocallib",
"postupdate": "npm link ../somelocallib"
}
Ini terasa luar biasa, tetapi tampaknya "berhasil". Dapatkan tip dari masalah npm ini: https://github.com/npm/npm/issues/1558#issuecomment-12444454
postinstall
dan postupdate
bukannya preinstall
dan preupdate
?
Inilah cara Anda akan menambahkan dependensi lokal:
npm install file:src/assets/js/FILE_NAME
Tambahkan ke package.json dari NPM:
npm install --save file:src/assets/js/FILE_NAME
Tambahkan langsung ke package.json seperti ini:
....
"angular2-autosize": "1.0.1",
"angular2-text-mask": "8.0.2",
"animate.css": "3.5.2",
"LIBRARY_NAME": "file:src/assets/js/FILE_NAME"
....
Ini adalah package.json yang akan Anda gunakan untuk proyek master:
"dependencies": {
"express": "*",
"somelocallib": "file:./somelocallib"
}
Di sana, ./somelocallib
adalah referensi ke folder perpustakaan sebagai relatif terhadap paket proyek utama .
Referensi: https://docs.npmjs.com/files/package.json#local-paths
Tangani dependensi perpustakaan Anda.
Selain berlari npm install
, Anda harus berlari (cd node_modules/somelocallib && npm install)
.
Ini adalah bug yang dikenal dengan NPM.
Referensi: https://github.com/npm/npm/issues/1341 (mencari referensi yang lebih terkini)
Periksa master Anda package.lock
dan Anda somelocallib/package.lock
ke manajer kode sumber Anda.
Kemudian dalam penggunaan Dockerfile Anda:
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)
# ...
Saya menggunakan tanda kurung dalam (cd A && B)
konstruksi saya untuk membuat operasi idempoten.
Saya tahu itu npm install ../somelocallib
berhasil.
Namun, saya tidak tahu apakah sintaks yang Anda perlihatkan dalam pertanyaan akan berfungsi dari package.json
...
Sayangnya, doc tampaknya hanya menyebutkan URL sebagai ketergantungan.
Coba file:///.../...tar.gz
, tunjuk lib lokal yang di-zip ... dan beri tahu kami jika berhasil.
Ini bekerja untuk saya: pertama, pastikan direktori npm memiliki pengguna yang tepat
sudo chown -R myuser ~/.npm
sudo chown -R myuser /usr/local/lib/node_modules
Kemudian link Anda di package.json Anda
"scripts": {
"preinstall": "npm ln mylib ../../path/to/mylib"
},
"dependencies": {
"mylib" : "*"
}
npm install
.
Sebenarnya, pada npm 2.0, sekarang ada dukungan jalur lokal (lihat di sini ).
Penasaran ..... setidaknya di Windows (npm saya 3.something) yang perlu saya lakukan:
"dependencies": {
"body-parser": "^1.17.1",
"module1": "../module1",
"module2": "../module2",
Ketika saya melakukan npm install ../module1 --save
itu menghasilkan jalur absolut dan bukan relatif per dokumentasi.
Saya mengacaukan sedikit lagi dan memutuskan itu ../xxx
sudah cukup.
Secara khusus, saya memiliki modul simpul lokal diperiksa untuk mengatakan d: \ build \ module1, d: \ build \ module2 dan proyek simpul saya (aplikasi) di d: \ build \ nodeApp.
Untuk 'menginstal', saya:
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 memiliki ketergantungan pada "module2": "../module2"; module2 tidak memiliki ketergantungan lokal; nodeApp memiliki dependensi "module1": "../module1" dan "module2": "../module2".
Tidak yakin apakah ini hanya berfungsi untuk saya karena semua 3 folder (module1, module2 dan nodeApp) berada pada level yang sama .......
Dua langkah untuk pengembangan lokal yang lengkap: