Saya memiliki repo modul yang diunduh, saya ingin menginstalnya secara lokal, bukan secara global di direktori lain?
Apa cara mudah untuk melakukan ini?
Saya memiliki repo modul yang diunduh, saya ingin menginstalnya secara lokal, bukan secara global di direktori lain?
Apa cara mudah untuk melakukan ini?
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>
argumennpm install
, argumen harus mengarah ke folder lokal alih-alih nama paket:sumber
rm -rf node_modules
sebelum dannpm install
sesudah Anda menjalankan skrip jawabannya.Karena ditanya dan dijawab oleh orang yang sama, saya akan menambahkan tautan npm sebagai alternatif.
dari docs:
[Sunting] Pada NPM 2.0, Anda dapat mendeklarasikan dependensi lokal di package.json
sumber
npm link
terhadap folder sekali (untuk membuat symlink global) dan kemudian jalankannpm 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 sayanpm link
menghasilkan ketergantungan duplikat, yang memecah hal-hal jika ketergantungan perlu digunakan sebagai tunggal.npm pack
+package.json
Inilah yang bekerja untuk saya:
LANGKAH 1: Dalam
module project
, jalankannpm pack
:Ini akan membangun
<package-name>-<version>.tar.gz
file.LANGKAH 2: Pindahkan file ke
consumer project
Idealnya Anda dapat meletakkan semua file tersebut di
tmp
folder diconsumer-project
root Anda :LANGKAH 3: Rujuk di
package.json
:LANGKAH 4:
Install
paket:npm install
ataunpm i
atauyarn
Sekarang, paket Anda akan tersedia di
consumer-project's node_modules
folder Anda .Semoga berhasil...
sumber
Tidak satu pun dari pendekatan ini (
npm link
ataupackage.json
ketergantungan file) yang berfungsi jika modul lokal memiliki dependensi rekan yang hanya ingin Anda instal dalam lingkup proyek Anda.Sebagai contoh:
Dalam skenario ini, set NPM up
myproject
'snode_modules/
seperti ini:Ketika node memuat
mymodule
dan itu terjadirequire('foo')
, node menyelesaikanmymodule
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 manafoo
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 darimymodule
ketika sintaks file dependensi digunakan dalampackage.json
. Saya belum menemukan cara untuk melakukan keduanya, sayangnya :(sumber
NODE_PATH
untuk menunjuk kenode_modules/
tempatfoo
diinstal. Jadi untuk kasus di atas, akan menjadi ini:NODE_PATH=/dev/myproject/node_modules/
Itu memungkinkanmymodule
untuk menemukanfoo
.Kehilangan properti utama?
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 diarahkan2)
main
properti dipackage.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
sumber