Yarn: Tambahkan perintah untuk menampilkan paket tertaut

Dibuat pada 7 Nov 2016  ·  50Komentar  ·  Sumber: yarnpkg/yarn

Saya pikir akan berguna untuk memiliki perintah yang menunjukkan paket tertaut saat ini (menggunakan yarn link [package] ) dalam proyek saat ini.

cat-feature

Komentar yang paling membantu

Bagaimana dengan sesuatu yang mirip dengan global ?

Usage: yarn link [add|ls|remove] [flags]

Semua 50 komentar

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:

Sunting: Tidak Kompatibel dengan OSX

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:

  • buka folder ~/.config/yarn/link
  • hapus modul yang ingin Anda putuskan tautannya

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:

  1. 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).

  2. Kemampuan untuk memutuskan tautan semua paket yang telah ditautkan ke proyek CURRENT.

  3. 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.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat