Jawaban:
Dari dokumentasi npm-link :
Dalam direktori modul lokal:
$ cd ./package-dir
$ npm link
Dalam direktori proyek untuk menggunakan modul:
$ cd ./project-dir
$ npm link package-name
Atau sekaligus menggunakan jalur relatif:
$ cd ./project-dir
$ npm link ../package-dir
Ini sama dengan menggunakan dua perintah di atas di bawah tenda.
npm link
akan membuat instance kedua dari dependensi eksternal. Jadi, jika Anda memiliki paket A perlu B dan C, B membutuhkan C. menghubungkan B akan menyebabkan aplikasi A memiliki dua contoh C.
Anda cukup memberikan satu <folder>
argumen npm install
, argumen harus mengarah ke folder lokal alih-alih nama paket:
npm install /path
rm -rf node_modules
sebelum dan npm install
sesudah Anda menjalankan skrip jawabannya.
Karena ditanya dan dijawab oleh orang yang sama, saya akan menambahkan tautan npm sebagai alternatif.
dari docs:
Ini berguna untuk menginstal barang-barang Anda sendiri, sehingga Anda dapat mengerjakannya dan mengujinya berulang-ulang tanpa harus terus membangun kembali.
cd ~/projects/node-bloggy # go into the dir of your main project
npm link ../node-redis # link the dir of your dependency
[Sunting] Pada NPM 2.0, Anda dapat mendeklarasikan dependensi lokal di package.json
"dependencies": {
"bar": "file:../foo/bar"
}
npm link
terhadap folder sekali (untuk membuat symlink global) dan kemudian jalankan npm link package-name
dalam folder proyek (untuk menggunakan symlink global dalam proyek Anda). Jawaban di bawah adalah jawaban yang tepat.
file:
pendekatan) memungkinkan aplikasi saya dan modul lokal untuk berbagi ketergantungan. Tes saya npm link
menghasilkan ketergantungan duplikat, yang memecah hal-hal jika ketergantungan perlu digunakan sebagai tunggal.
npm pack
+ package.json
Inilah yang bekerja untuk saya:
module project
, jalankan npm pack
:Ini akan membangun <package-name>-<version>.tar.gz
file.
consumer project
Idealnya Anda dapat meletakkan semua file tersebut di tmp
folder di consumer-project
root Anda :
package.json
:"dependencies": {
"my-package": "file:/./tmp/my-package-1.3.3.tar.gz"
}
Install
paket:npm install
atau npm i
atauyarn
consumer-project's node_modules
folder Anda .Semoga berhasil...
Tidak satu pun dari pendekatan ini ( npm link
atau package.json
ketergantungan file) yang berfungsi jika modul lokal memiliki dependensi rekan yang hanya ingin Anda instal dalam lingkup proyek Anda.
Sebagai contoh:
/local/mymodule/package.json:
"name": "mymodule",
"peerDependencies":
{
"foo": "^2.5"
}
/dev/myproject/package.json:
"dependencies":
{
"mymodule": "file:/local/mymodule",
"foo": "^2.5"
}
Dalam skenario ini, set NPM up myproject
's node_modules/
seperti ini:
/dev/myproject/node_modules/
foo/
mymodule -> /local/mymodule
Ketika node memuat mymodule
dan itu terjadi require('foo')
, node menyelesaikan mymodule
symlink, dan kemudian hanya mencari /local/mymodule/node_modules/
(dan leluhurnya) foo
, yang tidak ditemukannya. Sebagai gantinya, kami ingin simpul untuk melihat /local/myproject/node_modules/
, karena dari situlah menjalankan proyek kami, dan di mana foo
diinstal.
Jadi, kita juga perlu cara untuk memberitahu node ke tidak menyelesaikan symlink ini ketika mencari foo
, atau kita perlu cara untuk memberitahu NPM untuk menginstal salinan dari mymodule
ketika sintaks file dependensi digunakan dalam package.json
. Saya belum menemukan cara untuk melakukan keduanya, sayangnya :(
NODE_PATH
untuk menunjuk ke node_modules/
tempat foo
diinstal. Jadi untuk kasus di atas, akan menjadi ini: NODE_PATH=/dev/myproject/node_modules/
Itu memungkinkan mymodule
untuk menemukan foo
.
Seperti yang dijawab orang sebelumnya npm --save ../location-of-your-packages-root-directory
. The ../location-of-your-packages-root-directory
namun harus memiliki dua hal dalam rangka untuk itu untuk bekerja.
1) package.json
dalam direktori yang diarahkan
2) main
properti di package.json
harus diatur dan berfungsi ig "main": "src/index.js",
jika file entri ../location-of-your-packages-root-directory
adalah../location-of-your-packages-root-directory/src/index.js