Bagaimana cara menginstal paket dengan jalur lokal oleh Yarn? Tidak dapat menemukan paket

105

Di saya, package.jsonsaya menunjuk paket lokal my-custom-i18ndengan jalur relatifnya:

package.json

"dependencies": {
 "core-js": "^2.4.1",
 "my-custom-i18n": "./../MyProject.Shared/myproject-i18n",
 "rxjs": "5.0.0-beta.12",
 ...
}

npm installmenginstal paket dengan benar, tetapi yarnbermasalah dengan itu dan tidak dapat menemukan paket ini:

keluaran benang

$ yarn
yarn install v0.15.1
info No lockfile found.
[1/4] Resolving packages...
error Couldn't find package "myproject-i18n" on the "npm" registry.
info Visit http://yarnpkg.com/en/docs/cli/install for documentation about this command.

Saya melihat itu terlihat di npmregistri, di mana paket ini tidak hidup.

Pertanyaan

Apakah ada perubahan penggunaan benang dengan kemasan lokal? Yang saya maksud dengan paket lokal adalah paket yang ditunjukkan oleh jalur relatif sebagai my-custom-i18n.

michalczukm.dll
sumber

Jawaban:

201

Benang membutuhkan awalan file:untuk paket lokal.

Untuk jalur relatif:

yarn add file:./../your-project

Untuk jalur absolut

yarn add file:/dev/your-project

Untuk contoh Anda, ketergantungan dalam package.jsonakan dideklarasikan sebagai berikut:

 "my-custom-i18n": "file:./../MyProject.Shared/myproject-i18n",

Ini berfungsi baik untuk Benang dan NPM juga.

Ini adalah ketidakcocokan dengan klien NPM, tim Yarn sadar dan menyatakan untuk mendukung perilaku ini - referensi tentang masalah GitHub .

Memperbarui:

Sejak rilis v0.21.0 , file:awalan tidak diperlukan. Lihat pull-request dengan fix and changelog .

Piotr Lewandowski
sumber
1
terima kasih, bekerja seperti pesona. Tetapi jika itu tidak kompatibel dengan klien npm untuk saat ini - saya akan biarkan npmapa adanya :) PS ide saya adalah menggunakan yarnhanya secara lokal tanpa mengubah seluruh tim dan proyek. Jadi .. Saya harus menunggu sampai dukungan untuk ini :)
michalczukm
3
pastikan Anda menghapus cache Anda. sebagai benang selalu mencoba versi cache terlebih dahulu
Bo Chen
5
1 untuk pembaruan! Menghapus file:awalan memecahkan masalah yang kami hadapi di mana yarn installdi windows akan menambahkan ./awalan ke jalur file relatif, tetapi yarn installdi macOS akan menghapusnya.
Magne
Jalan mutlak tidak berhasil untuk saya. Ini akan bekerja untuk instalasi, tetapi kemudian transpiling akan gagal karena entah bagaimana itu mencari jalur relatif tetapi kunci benang memiliki jalur absolut.
pixelearth
1
Tampaknya dengan benang 1.17.3yang file:awalan masih diperlukan dalam situasi berikut: Mari kita katakan Anda memiliki paket baryang memiliki ketergantungan lokal ./dependencies/xyz. Jika paket lain foomenggunakan paket bar, itu akan mencoba menyelesaikan ./dependencies/xyzrelatif terhadap foodirektori, bukan relatif terhadap bardirektori. Setelah mengubah ketergantungan file:./dependencies/xyz, masalah telah diselesaikan.
David Callanan