Yarn: أضف أمرًا لإظهار الحزم المرتبطة

تم إنشاؤها على ٧ نوفمبر ٢٠١٦  ·  50تعليقات  ·  مصدر: yarnpkg/yarn

أعتقد أنه سيكون من المفيد أن يكون لديك أمر يعرض الحزم المرتبطة currenlty (باستخدام 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 هذا )

تم فحص

هل هذه الميزة لا تزال قيد النظر؟ @ kittens

+1. سيكون من الجيد أن يكون هذا مدمجًا ، على الرغم من أن لدي الآن نصًا برمجيًا مستقلًا أستخدمه:

find node_modules node_modules/\@* -depth 1 -type l -print | while read MODULE ; do
    echo "Linked module in use: $MODULE"
done

هذا مفيد بشكل خاص على النوافذ ، لأنك تريد حقًا أن يخبرك الغزل بما يعتقد أنه مرتبط به عند تصحيح أخطاء الروابط الرمزية على هذا النظام الأساسي.

بحثت للتو لمعرفة ما إذا كان هذا موجودًا ...

الأهم من الحالة التي توفر التعليقات هنا حلولاً لها (بالنسبة لي ، على الأقل) هو القدرة على معرفة روابط الغزل المتاحة _ أي ما هي الدلائل التي قمت بتشغيلها yarn link في ، وماذا في ذلك؟ توجد اقترانات بين أسماء الحزم والأدلة التي تحتوي على تلك الحزم.

قد يعتقد المرء أن الدليل ~/.yarn-config/link سيحتوي على المعلومات ذات الصلة - لكنه فارغ.

MikeTaylor أعتقد أنك تبحث عن ~/.config/yarn/link

انا كنت_! شكرا جزيلا!

(هذا يتركني أتساءل قليلاً عن سبب وجود .yarn ، .yarn-cache ، .yarn-config ، .yarnrc _ و_ .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 ، توجد روابط الغزل هنا:
~\AppData\Local\Yarn\Data\link\

أي تحديثات؟

find node_modules -type l | grep -v .bin و find ~/.config/yarn/link -type l مفيدان في العثور على الوحدات المرتبطة والقابلة للربط ، على التوالي.

في محاولة لاستكمال مشاركة hubgit ، أعتقد أن ما يلي سيفعل مع Windows باستخدام PowerShell:
Get-ChildItem '.\node_modules\.bin\' | Where-Object {$_.LinkType -eq 'SymbolicLink'}

سيكون هذا مفيدًا جدًا إذا تم توفيره. هناك أي تقدم؟

+1

+1

بدلاً من ذلك ، قم بتنفيذ # 710.

إذا كنت أقوم بتشغيل yarn link وهناك بالفعل حزمة مسجلة بنفس الاسم ، فلماذا لا تستطيع الغزل طباعة مسار الحزمة المرتبطة بالفعل؟ بالإضافة إلى ذلك ، يمكن أن يكون الغزل أكثر ذكاءً من خلال إلغاء ربط الحزمة الأخرى وربط الحزمة الحالية (ربما بعلامة -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 بعد عامين ونصف من فتح هذه المشكلة وتم وضع علامة عليها كميزة جديدة (ميزة القط؟) ، ولم نسمع من فريق الغزل منذ ذلك الحين. أي حركة على هذا؟ :)

ساعدني هذا في العثور على الحزم المرتبطة في مشروعي:

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

إليك ما أفعله لإدراج الحزم المرتبطة حاليًا في مشروع:

تحرير: غير متوافق مع 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: صرخة:

يمكن لشخص من الغزل أو 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 ، كل ما لدي هناك مجلد العالمي الذي فارغ.
أنا أستخدم Manjaro linux ، إذا كان ذلك يمكن أن يساعد ..

هل هذا لا يزال يعتبر؟

انتهى بي الأمر بصنع غلاف خيوط يضيف هذه الوظيفة بالإضافة إلى تثبيت حزم @types تلقائيًا في مشاريع TypeScript: https://github.com/iansu/blarn

يبدو أنه لا توجد اعتراضات على إضافة هذه الوظيفة إلى الغزل ، بل يجب أن يقوم بها شخص ما. متطلبات:

  1. القدرة على سرد الحزم التي تم ربطها بالمشروع الحالي. بمعنى آخر ، قم بفحص مجلد node_modules بشكل متكرر للحصول على ارتباطات رمزية للحزم الخارجية (المحلية).

  2. القدرة على إلغاء ربط جميع الحزم التي تم ربطها بمشروع CURRENT.

  3. القدرة على سرد الحزم التي تم تسجيلها في دليل تسجيل الارتباط العالمي ( $HOME/.config/yarn/link على * nix ، %LOCALAPPDATA%\yarn\data\link على Windows)

نظرًا لأن yarn link [add|ls|remove] (أحد الاقتراحات السابقة) لا يتوافق تمامًا مع الإصدارات السابقة ، أقترح: yarn link --list . يجب أن تنشئ هذه العلامة قائمة من كلا (1) و (3).

بالإضافة إلى ذلك ، أقترح yarn unlink --all كطريقة لتحقيق (2).

أنا أعمل على العلاقات العامة. لست على دراية على الإطلاق بأجزاء الغزل الداخلية ، ولكن إذا نجحت ، فسأعود إلى هذه المشكلة عند الإرسال.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات