現在のプロジェクトで( yarn link [package]
)現在リンクされているパッケージを表示するコマンドがあると便利だと思います。
global
似たものはどうですか?
Usage: yarn link [add|ls|remove] [flags]
ヤーンリンク[追加| ls |削除] [フラグ]
はい、それは非常に明確で素晴らしいことだと思います。
これに関する動きや回避策はありますか?
私はこの回避策を見つけました: ls -l node_modules | grep ^l
@tnrich素晴らしいソリューション、名前空間をサポートするより一般的なソリューションはありますか? 例: node_modules/@myCompany
@jlegroneをチェックしました、うまく
この機能はまだ検討中ですか? @kittens
+1。 これを組み込みとして使用すると便利ですが、今のところ、次のスタンドアロンスクリプトを使用しています。
find node_modules node_modules/\@* -depth 1 -type l -print | while read MODULE ; do
echo "Linked module in use: $MODULE"
done
これは、Windowsで特に役立ちます。これは、そのプラットフォームでシンボリックリンクをデバッグするときに、yarnがリンクされていると考えるものを実際に伝えたいためです。
これが存在するかどうかを確認するために検索しました...
ここでのコメントが(少なくとも私にとっては)回避策を提供する場合よりも重要なのは、どのヤーンリンクが_利用可能_であるか、つまり、どのディレクトリでyarn link
を実行したかなどを知る機能です。パッケージ名とそれらのパッケージを含むディレクトリの間には関連付けが存在します。
~/.yarn-config/link
ディレクトリに関連情報が含まれていると思うかもしれませんが、空です。
@MikeTaylorあなたが探しているのは~/.config/yarn/link
だと思います
私は_だった_! どうもありがとう!
(これにより、ホームディレクトリに.yarn
、 .yarn-cache
、 .yarn-config
、 .yarnrc
_and_ .config/yarn
はなぜか疑問に思いますが、通過させてください。)
その構成が見つかりません
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.
私が見つけた唯一の敵は〜/ .yarnrcです
@retog Windowsを使用している場合、探しているディレクトリはC:\Users\<userName>\AppData\Local\Yarn\config\link
ように見えます。
@TomGaultに感謝します、リンクはそこにあります。
グローバルとローカルのためにこの笑を持っていることを願っています
これは、クロスリポジトリ統合に取り組む際のデバッグに大いに役立ちます!
(私が現在自分自身を見つけている状況)
yarn link ls
ようなコマンドを使用すると、すべてのリンクを表示できます。特に、リンクがどこから作成されたか覚えていない場合は、削除できます。
それまでの間、macOS / Linuxの場合、これは機能するはずです。
ls -la ~/.config/yarn/link/
私はこれのために愚かな方法を作ります、現在のプロジェクトのリンクリストを表示することができます
https://www.npmjs.com/package/yarn-list-link
$ npx yarn-list-link
@node-novel\pattern-split
cjk-conv
lazy-cacache
regexp-cjk
uni-string
Windows 10を実行している私のPCでは、糸のリンクは次のとおりです。
~\AppData\Local\Yarn\Data\link\
更新はありますか?
find node_modules -type l | grep -v .bin
とfind ~/.config/yarn/link -type l
は、それぞれリンクされたモジュールとリンク可能なモジュールを見つけるのに役立ちます。
@hubgitの投稿を補完するために、PowerShellを使用するWindowsでは次のことができると思います。
Get-ChildItem '.\node_modules\.bin\' | Where-Object {$_.LinkType -eq 'SymbolicLink'}
提供されている場合、これは非常に役立ちます。 何か進展はありますか?
+1
+1
または、#710を実装します。
yarn link
を実行していて、同じ名前で登録されたパッケージがすでに存在する場合、すでにリンクされているパッケージのパスをyarnで印刷できないのはなぜですか? さらに、他のパッケージのリンクを解除して現在のパッケージをリンクすることで、yarnをよりスマートにすることができます(おそらく-f
フラグを使用)。
+1
+1
Windowsでは、 dir %LOCALAPPDATA%\yarn\data\link
は、ユーザー名などを知らなくても機能します。
+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年半が経過し、新機能(cat-feature?)としてタグ付けされましたが、それ以来、yarnチームから
これは、プロジェクト内のリンクされたパッケージを見つけるのに役立ちました。
ls -l node_modules | grep ^l
https://stackoverflow.com/questions/24933955/easy-way-to-list-node-modules-i-have-npm-linked
ls -l node_modules | grep ^l
の問題は、リンクされた_scoped_パッケージ( @types
ような@ディレクトリの下のサブディレクトリ)が表示されないことです。
簡単な修正は、再帰フラグR
をls
コマンドに追加することです。 比較的小さな依存関係リストでテストしたため、パフォーマンスについて話すことができません。
ls -lR node_modules | grep ^l
プロジェクト内で現在リンクされているパッケージを一覧表示するには、次のようにします。
yllc() {
find -L node_modules -maxdepth 3 -type d -xtype l | xargs -I{} sh -c "echo {} '->' $(realpath {})"
}
結果:
node_modules/@somname/somepkg -> /home/user/repos/somename-somepkg
リンクできるパッケージを見つけるために私が行うことは次のとおりです。これには、スコープ付きパッケージが含まれます。
yll () {
linkDir=~/.config/yarn/link
find $linkDir -maxdepth 2 -type l | xargs realpath -s --relative-to $linkDir
}
結果:
@somename/foo
@othername/bar
somepkg
otherpkg
次に、次のようにfzf
使用できます。
yarn link $(yll | fzf -m)
私はこれらを頻繁に使用しているので、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"
私たちはソリューションを投稿していて、それらはすべてここではとても複雑に見えるので、私があなたをすべて助けさせてください:
alias yarn-linked="find node_modules -type l -maxdepth 3 | grep -v .bin | cut -f2 -d/"
簡単なピーシー。
編集:私は@Bkuceraソリューションが本当に好きに
編集:私の解決策も複雑です! くそー、トロールは失敗する!
編集: @Bkucera 、あなたのソリューションはMacOS互換ではありません:cry:
ヤーンまたはnpmの誰かがこれを調べることができますか? 明らかに大きな需要があります、<3をお願いします
+1
yll () { linkDir=~/.config/yarn/link find $linkDir -maxdepth 2 -type l | xargs realpath -s --relative-to $linkDir }
これは魅力のように機能しました。 共有してくれてありがとう!
私のために働いた解決策はただ:
~/.config/yarn/link
フォルダーに移動しますこれらの指示をメッセージに追加するのが良い修正だと思います
プロジェクトでyarn 1.x
を使用すると、いくつかのエイリアスが追加されました。
$ 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-)'
それは私にはうまくいきません。 私はフォルダ~/.config/yarn/link
を持っていません、私が持っているのは空のグローバルフォルダだけです。
それが助けになるなら、私はManjarolinuxを使います。
これはまだ考慮されていますか?
最終的に、この機能を追加するYarnラッパーを作成し、TypeScriptプロジェクトに@types
パッケージを自動的にインストールしました: https :
この機能がyarnに追加されることに異議はないようですが、誰かが行う必要があります。 要件:
CURRENTプロジェクトにリンクされているパッケージを一覧表示する機能。 つまり、 node_modules
フォルダーを再帰的に検査して、外部(ローカル)パッケージへのシンボリックリンクを探します。
CURRENTプロジェクトにリンクされているすべてのパッケージのリンクを解除する機能。
グローバルリンクレジストリディレクトリに登録されているリストパッケージへの能力( $HOME/.config/yarn/link
* nixの上で、 %LOCALAPPDATA%\yarn\data\link
Windowsの場合)
yarn link [add|ls|remove]
(以前の提案の1つ)は厳密には下位互換性がないため、 yarn link --list
を提案します。 このフラグは、(1)と(3)の両方のリストを作成する必要があります。
さらに、(2)を達成する方法としてyarn unlink --all
を提案します。
私はPRに取り組んでいます。 私は糸の内部にまったく精通していませんが、成功した場合は、送信時にこの問題にリンクします。
最も参考になるコメント
global
似たものはどうですか?Usage: yarn link [add|ls|remove] [flags]