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 linkakan 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_modulessebelum dan npm installsesudah 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 linkterhadap folder sekali (untuk membuat symlink global) dan kemudian jalankan npm link package-namedalam 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 linkmenghasilkan ketergantungan duplikat, yang memecah hal-hal jika ketergantungan perlu digunakan sebagai tunggal.
npm pack + package.jsonInilah yang bekerja untuk saya:
module project, jalankan npm pack:Ini akan membangun <package-name>-<version>.tar.gzfile.
consumer projectIdealnya Anda dapat meletakkan semua file tersebut di tmpfolder di consumer-projectroot Anda :
package.json:"dependencies": {
"my-package": "file:/./tmp/my-package-1.3.3.tar.gz"
}
Installpaket:npm installatau npm iatauyarn
consumer-project's node_modulesfolder Anda .Semoga berhasil...
Tidak satu pun dari pendekatan ini ( npm linkatau package.jsonketergantungan 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 mymoduledan itu terjadi require('foo'), node menyelesaikan mymodulesymlink, 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 foodiinstal.
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 mymoduleketika sintaks file dependensi digunakan dalam package.json. Saya belum menemukan cara untuk melakukan keduanya, sayangnya :(
NODE_PATHuntuk menunjuk ke node_modules/tempat foodiinstal. Jadi untuk kasus di atas, akan menjadi ini: NODE_PATH=/dev/myproject/node_modules/ Itu memungkinkan mymoduleuntuk menemukan foo.
Seperti yang dijawab orang sebelumnya npm --save ../location-of-your-packages-root-directory. The ../location-of-your-packages-root-directorynamun harus memiliki dua hal dalam rangka untuk itu untuk bekerja.
1) package.jsondalam direktori yang diarahkan
2) mainproperti di package.jsonharus diatur dan berfungsi ig "main": "src/index.js",jika file entri ../location-of-your-packages-root-directoryadalah../location-of-your-packages-root-directory/src/index.js