Saya pikir akan berguna untuk memiliki perintah yang menunjukkan paket tertaut saat ini (menggunakan yarn link [package]
) dalam proyek saat ini.
Bagaimana dengan sesuatu yang mirip dengan global
?
Usage: yarn link [add|ls|remove] [flags]
tautan benang [tambah|ls|hapus] [bendera]
Ya saya pikir itu akan sangat eksplisit dan bagus.
Adakah gerakan atau solusi untuk yang satu ini?
Saya menemukan solusi ini: ls -l node_modules | grep ^l
@tnrich solusi yang bagus, apakah ada yang lebih umum yang mendukung namespace? misalnya node_modules/@myCompany
@bingzheyuan bisa dicoba
( ls -l node_modules ; ls -l node_modules/@* ) | grep ^l
(disalin dari pertanyaan SO ini )
@jlegrone diperiksa, berfungsi dengan baik, terima kasih banyak
Apakah fitur ini masih dipertimbangkan? @anak kucing
+1. Akan menyenangkan untuk memiliki ini sebagai bawaan, meskipun untuk saat ini saya memiliki skrip mandiri yang saya gunakan:
find node_modules node_modules/\@* -depth 1 -type l -print | while read MODULE ; do
echo "Linked module in use: $MODULE"
done
Ini sangat membantu di windows, karena Anda benar-benar ingin benang memberi tahu Anda apa yang menurutnya ditautkan saat men-debug symlink pada platform itu.
hanya mencari untuk melihat apakah ini ada ...
Lebih penting daripada kasus di mana komentar di sini memberikan solusi untuk (setidaknya bagi saya) adalah kemampuan untuk mengetahui tautan benang apa yang _available_ -- yaitu, direktori apa yang saya jalankan yarn link
di, dan jadi apa asosiasi ada antara nama-paket dan direktori yang berisi paket-paket itu.
Orang mungkin berpikir bahwa direktori ~/.yarn-config/link
akan berisi informasi yang relevan -- tetapi itu kosong.
@MikeTaylor Saya pikir Anda sedang mencari ~/.config/yarn/link
saya _was_! Terima kasih banyak!
(Ini sedikit membuat saya bertanya-tanya mengapa saya memiliki .yarn
, .yarn-cache
, .yarn-config
, .yarnrc
_and_ .config/yarn
di direktori home saya, tetapi biarkan berlalu.)
Tidak menemukan konfigurasi itu
PS C:\Users\me> ls ~/.config
Directory: C:\Users\me\.config
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2018-03-29 5:59 PM configstore
PS C:\Users\me> ls ~/.yarn-config
ls : Cannot find path 'C:\Users\me\.yarn-config' because it does not exist.
Satu-satunya fie yang saya temukan adalah ~/.yarnrc
@retog jika Anda menggunakan Windows sepertinya direktori yang Anda cari adalah: C:\Users\<userName>\AppData\Local\Yarn\config\link
.
Terima kasih @TomGault ,
semoga bisa memiliki ini lol untuk global dan lokal
Ini akan sangat membantu debugging saat mengerjakan integrasi cross repo!
(Situasi yang saya temukan saat ini)
Memang akan menyenangkan dengan perintah seperti yarn link ls
untuk melihat semua tautan, terutama ketika Anda tidak ingat dari mana tautan itu dibuat, sehingga Anda dapat menghapusnya.
Sementara itu, untuk macOS/Linux, ini akan berfungsi:
ls -la ~/.config/yarn/link/
saya membuat cara bodoh untuk ini, dapat menampilkan daftar tautan proyek saat ini
https://www.npmjs.com/package/yarn-list-link
$ npx yarn-list-link
@node-novel\pattern-split
cjk-conv
lazy-cacache
regexp-cjk
uni-string
Di PC saya yang menjalankan Windows 10, tautan benang ada di sini:
~\AppData\Local\Yarn\Data\link\
ada pembaruan?
find node_modules -type l | grep -v .bin
dan find ~/.config/yarn/link -type l
-masing berguna untuk menemukan modul yang ditautkan dan yang dapat ditautkan.
Dalam upaya untuk melengkapi posting @hubgit , saya yakin yang berikut ini akan dilakukan untuk Windows menggunakan PowerShell:
Get-ChildItem '.\node_modules\.bin\' | Where-Object {$_.LinkType -eq 'SymbolicLink'}
Ini akan sangat membantu jika disediakan. Apakah ada kemajuan?
+1
+1
Atau, terapkan #710.
Jika saya menjalankan yarn link
dan sudah ada paket yang terdaftar dengan nama yang sama, mengapa benang tidak dapat mencetak jalur paket yang sudah ditautkan? Selain itu, yarn bisa lebih pintar dengan membatalkan tautan paket lain dan menautkan yang sekarang (mungkin dengan flag -f
).
+1
+1
Di Windows, dir %LOCALAPPDATA%\yarn\data\link
akan berfungsi tanpa perlu mengetahui nama pengguna Anda atau apa pun.
+1
# yarn link list
yll () {
current=$PWD
for link in $(find $HOME/.config/yarn/link -type l)
do
cd $link"/../"$(readlink $link)
echo $link $'\n==>' $PWD
done
cd $current
}
# yarn unlink [package]
yul () {
current=$PWD
link=$(find $HOME/.config/yarn/link -type l | grep $1$)
cd $link"/../"$(readlink $link)
yarn unlink
cd $current
}
@torifat 2 setengah tahun sejak masalah ini dibuka dan ditandai sebagai fitur baru (fitur kucing?), dan kami belum mendengar kabar dari tim benang sejak itu. Setiap gerakan ini? :)
Ini membantu saya menemukan paket tertaut di proyek saya:
ls -l node_modules | grep ^l
https://stackoverflow.com/questions/24933955/easy-way-to-list-node-modules-i-have-npm-linked
Masalah dengan ls -l node_modules | grep ^l
adalah ia tidak akan menampilkan paket _scoped_ yang ditautkan (sub-direktori di bawah direktori @ seperti @types
)
Perbaikan cepat adalah menambahkan flag rekursif R
ke perintah ls
. Tidak dapat berbicara untuk kinerja karena saya menguji dalam daftar ketergantungan yang relatif kecil:
ls -lR node_modules | grep ^l
Inilah yang saya lakukan untuk membuat daftar paket yang saat ini ditautkan dalam sebuah proyek:
yllc() {
find -L node_modules -maxdepth 3 -type d -xtype l | xargs -I{} sh -c "echo {} '->' $(realpath {})"
}
menghasilkan:
node_modules/@somname/somepkg -> /home/user/repos/somename-somepkg
Inilah yang saya lakukan untuk menemukan paket yang dapat saya tautkan, yang mencakup paket cakupan:
yll () {
linkDir=~/.config/yarn/link
find $linkDir -maxdepth 2 -type l | xargs realpath -s --relative-to $linkDir
}
menghasilkan:
@somename/foo
@othername/bar
somepkg
otherpkg
Saya kemudian dapat menggunakan fzf
seperti:
yarn link $(yll | fzf -m)
Saya sudah sering menggunakan ini sehingga saya membuatnya menjadi alias bash:
alias yarn-linked="find . -type l | grep -v .bin | sed 's/^\.\/node_modules\///'"
alias yarn-unlink-all="yarn-linked | xargs yarn unlink && yarn install --check-files"
Karena kami memposting solusi dan semuanya tampak sangat rumit di sini, izinkan saya membantu Anda semua:
alias yarn-linked="find node_modules -type l -maxdepth 3 | grep -v .bin | cut -f2 -d/"
Mudah.
Sunting: Meskipun terlihat, saya sangat menyukai solusi @Bkucera ! :tepuk:
Sunting: Solusi saya juga rumit! Sial, troll gagal!
Sunting: @Bkucera , solusi Anda tidak kompatibel dengan MacOS :cry:
dapatkah seseorang dari benang atau npm melihat ini? jelas ada permintaan besar, tolong <3
+1
yll () { linkDir=~/.config/yarn/link find $linkDir -maxdepth 2 -type l | xargs realpath -s --relative-to $linkDir }
Ini bekerja seperti pesona. Terima kasih telah berbagi!
Solusi yang berhasil bagi saya adalah dengan hanya:
~/.config/yarn/link
Saya pikir perbaikan yang baik adalah menambahkan instruksi ini ke pesan
Menggunakan yarn 1.x
dalam sebuah proyek, akhirnya menambahkan beberapa alias:
$ alias | grep yarn
yarn-linked='find -L $(find node_modules -type l) -type d -prune'
yarn-links='(cd $HOME/.config/yarn/link && find . -type l | cut -c 3-)'
Ini tidak bekerja untuk saya. Saya tidak punya folder ~/.config/yarn/link
, yang saya miliki hanyalah folder global yang kosong.
Saya menggunakan linux Manjaro, jika itu bisa membantu..
Apakah ini masih dipertimbangkan?
Saya akhirnya membuat pembungkus Benang yang menambahkan fungsi ini serta secara otomatis menginstal paket @types
dalam proyek TypeScript: https://github.com/iansu/blarn
Sepertinya tidak ada keberatan untuk fungsi ini ditambahkan ke benang, itu hanya perlu dilakukan oleh seseorang. Persyaratan:
Kemampuan untuk membuat daftar paket yang telah ditautkan ke proyek CURRENT. Dengan kata lain, periksa folder node_modules
secara rekursif untuk tautan simbolik ke paket eksternal (lokal).
Kemampuan untuk memutuskan tautan semua paket yang telah ditautkan ke proyek CURRENT.
Kemampuan untuk membuat daftar paket yang telah terdaftar di direktori registri tautan global ( $HOME/.config/yarn/link
pada *nix, %LOCALAPPDATA%\yarn\data\link
pada Windows)
Karena yarn link [add|ls|remove]
(salah satu saran sebelumnya) tidak sepenuhnya kompatibel ke belakang, saya mengusulkan: yarn link --list
. Bendera ini harus membuat daftar KEDUA (1) dan (3).
Selain itu, saya mengusulkan yarn unlink --all
sebagai cara untuk mencapai (2).
Saya sedang mengerjakan PR. Saya sama sekali tidak terbiasa dengan internal benang, tetapi jika berhasil, saya akan menautkan kembali ke masalah ini saat mengirimkan.
Komentar yang paling membantu
Bagaimana dengan sesuatu yang mirip dengan
global
?Usage: yarn link [add|ls|remove] [flags]