npm link foo-bar
update package.json untuk menunjuk ke direktori lokal dari modul foo-bar alih-alih hanya menghubungkannya
Perhatikan bahwa foo-bar adalah paket pribadi yang diinstal dari git (git + ssh)
npm link foo-bar
membuat symlink di node_modules/
tanpa mengubah package.json
$ cd ./foo-bar && npm link
$ cd ../other-package && (cat ./package.json | grep "foo-bar")
"foo-bar": "git+ssh://[email protected]:..."
$ npm link foo-bar
$ cat ./package.json | grep "foo-bar"`
"foo-bar": "file:../foo-bar",
Paket foo-bar sekarang terhubung ke folder lokal foo-bar
alih-alih link di npm root -g
Saya mengonfirmasi pengalaman yang sama di Windows 10 1909 dengan NodeJS 15.0.1.
Dan saya setuju bahwa perilaku seperti itu tampaknya tidak diinginkan bagi saya.
Contoh ini harus berupa repro yang dikurangi penuh:
$ git clone [email protected]:wesleytodd/english-days.git && cd english-days && npm link && cd .. # this is just a dep free test package I use
$ mkdir link-to && cd link-to && npm init -y && npm i english-days
$ cat package.json | grep english-days # "english-days": "^1.0.0"
$ npm link english-days
$ cat package.json | grep english-days # "english-days": "file:../english-days"
Juga mencoba perintah link
dengan --no-save
yang tidak mengubah perilaku dan mungkin merupakan bug lain.
Solusi:
ln -s ../foo-bar ./node_modules/foo-bar
)$ cd ./foo-bar && npm link
$ cd ../other-package
$ npm i --no-save "$(npm root -g)/foo-bar"
Sayangnya melakukan symlink secara manual seperti itu tidak akan menyiapkan symlink biner apa pun, juga tidak akan menjalankan skrip siklus hidup yang sesuai.
Coba juga perintah tautan di atas dengan --no-save yang tidak mengubah perilaku dan mungkin merupakan bug lain.
Mencoba dengan --no-save
juga merupakan naluri pertama saya ketika saya melihat npm link
dimodifikasi package.json.
Saya rasa ini jelas merupakan perubahan perilaku yang minimal perlu didokumentasikan dalam catatan rilis.
Saya mengandalkan npm link
untuk menyiapkan lingkungan pengembangan yang kompleks, dan seperti yang ada sekarang ini tidak akan berhasil. Memodifikasi package.json memiliki potensi besar bagi saya (atau siapa pun yang menggunakan pengaturan serupa) secara tidak sengaja melakukan perubahan di package.json, dan merusak segalanya.
Akan sangat menyenangkan jika seseorang dari NPM mengakui hal ini / memberi kami semacam pemberitahuan , saya harus kembali ke
Komentar yang paling membantu
Sayangnya melakukan symlink secara manual seperti itu tidak akan menyiapkan symlink biner apa pun, juga tidak akan menjalankan skrip siklus hidup yang sesuai.