Yarn: リンクされたパッケージを表示するコマンドを追加

作成日 2016年11月07日  ·  50コメント  ·  ソース: yarnpkg/yarn

現在のプロジェクトで( yarn link [package] )現在リンクされているパッケージを表示するコマンドがあると便利だと思います。

cat-feature

最も参考になるコメント

global似たものはどうですか?

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

全てのコメント50件

global似たものはどうですか?

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

ヤーンリンク[追加| ls |削除] [フラグ]

はい、それは非常に明確で素晴らしいことだと思います。

これに関する動きや回避策はありますか?

私はこの回避策を見つけました: ls -l node_modules | grep ^l

@tnrich素晴らしいソリューション、名前空間をサポートするより一般的なソリューションはありますか? 例: node_modules/@myCompany

@bingzheyuanあなたが試すことができます

( ls -l node_modules ; ls -l node_modules/@* ) | grep ^l

このSOの質問からコピー)

@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 .binfind ~/.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ような@ディレクトリの下のサブディレクトリ)が表示されないことです。
簡単な修正は、再帰フラグRlsコマンドに追加することです。 比較的小さな依存関係リストでテストしたため、パフォーマンスについて話すことができません。

ls -lR node_modules | grep ^l

プロジェクト内で現在リンクされているパッケージを一覧表示するには、次のようにします。

編集:OSX互換ではありません

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に追加されることに異議はないようですが、誰かが行う必要があります。 要件:

  1. CURRENTプロジェクトにリンクされているパッケージを一覧表示する機能。 つまり、 node_modulesフォルダーを再帰的に検査して、外部(ローカル)パッケージへのシンボリックリンクを探します。

  2. CURRENTプロジェクトにリンクされているすべてのパッケージのリンクを解除する機能。

  3. グローバルリンクレジストリディレクトリに登録されているリストパッケージへの能力( $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に取り組んでいます。 私は糸の内部にまったく精通していませんが、成功した場合は、送信時にこの問題にリンクします。

このページは役に立ちましたか?
0 / 5 - 0 評価