كيف يوصي الغزل بأن نستخدم npx (هذا الآن جزء أساسي من npm - https://github.com/npm/npm/pull/17685).
في الأساس ، تعمل إلى حد ما مثل "bundle exec" لروبي ، بخلاف أنها تطلق مدير الحزم إذا كانت التبعيات مفقودة. سيؤدي هذا إلى تجنب الغزل والعودة إلى npm.
هل هناك خطة لإنشاء مكافئ "ypx" يستفيد من الغزل للقيام بذلك؟
بالنسبة لما يستحق ، أعتقد أن npx مستوحاة من "إنشاء الغزل" وهو مشابه ولكنه يعمل فقط مع الحزم مسبوقة بـ "create-". لست متأكدا ما هي الخطط هنا.
نعم ، لدينا حاليًا yarn create
(حاول استخدام yarn create react-app
، على سبيل المثال). قد نفتحه على أفعال الآخرين في المستقبل ، لكن هذا ليس على خريطة الطريق بعد.
أنا أعمل على مكتبة - ifying npx. ليست مهمة كبيرة الحصول على رمز npx الحالي واستبدال الشجاعة المتعلقة بـ npm بأوامر الغزل المكافئة.
لن أضيف ذلك مباشرةً إلى npx نفسه ، لأنه _ من المفترض_ أن يكون محايدًا: لا يقوم npx بأي عمليات تتعارض مع الأشخاص الذين يستخدمون مديري الحزم الآخرين. لا يتطلب الأمر وجود npm على النظام ، لذا يمكنك npm rm -g npm
و npx سيعمل بشكل جيد. لذلك يمكنك أن تقول npx _is_ ypx
، إلا إذا كنت تشعر بشدة حيال مشاركة ذاكرة التخزين المؤقت ، وهذا شيء جميل.
(في الإلهام: إن npx مستوحى بشكل أساسي من طلب الميزة طويل الأمد هذا: https://github.com/npm/npm/issues/6053. تتمحور معظم وظائفها حول تلبية هذه الحاجة. تمت إضافة ميزة التثبيت التلقائي __________ بعد إنشاء الغزل ، ويقصد به بالتأكيد أن يكون حلاً فعليًا معممًا لهذا الشيء المعين - لكنه يفعل _ أكثر من ذلك بكثير_ من ذلك)
sandys - المشكلة المشار إليها zkat (npm / npm # 6053) ليست مشكلة في yarn
حيث يمكنك فقط تنفيذ yarn x
(أو yarn run x
إذا كنت تريد ذلك صريح) إذا كان x
موجودًا في دليلك ./node_modules/.bin
. لذلك لا أعتقد أن هناك حاجة ملحة لمعادلة npx
.
إذا كنت تعتقد أن هناك حاجة ماسة ، فهل يمكنك توضيح سبب حاجتك إليها؟ على سبيل المثال. ما المشكلة التي ستحلها لك؟
هل يعرف أحد ما إذا كان yarn exec
مشابهًا لـ bundle exec
؟ أراه على CLI ولكن ليس في المستندات على موقع الويب. يبدو أن اللعب السريع باستخدام yarn exec
على سطر الأوامر يعمل على تشغيل ثنائيات مثبتة ، لذا فقد يحل مشكلتكsandys.
FWIW ، npm-run هي أداة أقدم تتيح node_modules
، ولا تعتمد على npm
. ليس لديها أي خيارات رغم ذلك ، في حين أن npx
مليء بالمقابض.
حالة استخدام BYK قيد التشغيل على سبيل المثال ypx greenkeeper-lockfile@1
أو ypx danger@2
على CI بدون إضافة هؤلاء كـ deps إلى المشروع نفسه
عادةً لا يقوم SimenB CI بإعادة المشروع إلى التحكم في الإصدار ، لذلك لا يهم إذا كان يضيف التبعيات في العملية ، أليس كذلك؟
MarkBennett نظرًا لأن yarn exec
لا يقوم بتشغيل البرامج النصية من package.json
لا أعتقد أنه المكان المناسب لإضافة هذه الميزة.
BYK أنا لست OP ، لكنني جئت إلى طلب الميزة هذا لأن لدي حزمة على جهازي المحلي ولكن ليس في package.json الخاص بي. لذلك سيتم تشغيل تطبيقي من أجلي ، ولكن ليس لأي شخص أجرى تثبيتًا نظيفًا لتطبيقي. هذه إحدى ميزات أداة Ruby bundler bundle exec
التي أحبها - لن تعمل إلا إذا كانت جميع الأقسام موجودة في البيان.
شكواي الرئيسية بشأن yarn x
هو أنه يحاول حل هدف من 3 (ثلاثة) أماكن مختلفة: خيوط أوامر داخلية ، ونصوص npm وصناديق.
لنفترض أن لديّ أداة باسم check
: 1) yarn check
سيشغّل الأمر الداخلي check
بدلاً من ذلك 2) yarn run check
سيُشغّل npm للمستهلك البرنامج النصي بهذا الاسم أو ربما أداتي.
يعطي npx
فصلًا قويًا للمفاهيم: yarn x
دائمًا أمر داخلي ، yarn run x
دائمًا نص برمجي ، و npx x
دائمًا ثنائي ، لا حاجة للتخمين والأمل.
شيء من هذا القبيل جوهر
#!/usr/bin/env bash
package_name=$1
temp_dir="/tmp/ypx/$package_name/$(date +%s%N)"
mkdir -p $temp_dir
(cd $temp_dir; yarn add $package_name) && (PATH="$temp_dir/node_modules/.bin":$PATH; "$@")
rm -rf $temp_dir
BYK حالة استخدام أخرى تقوم بتشغيل _binary_ لحزمة لم يتم تثبيتها محليًا بعد وأريد تشغيلها مرة واحدة ، دون عناء حذفها بمفردي بعد ذلك. الدالة npx
هي امتداد لسلوك yarn x
لأنه يمكنك:
./node_modules/.bin/
في الدليل الحالي./node_modules/
موجودًا ، فقم بتنزيل الحزمة في دليل مؤقت مع تبعياتها واستدعاء الأمريتم ذلك بشفافية للمستخدم.
يمكن أن يقدم الافتراض ypx
نقطة ثالثة وهي:
BYK لا يعمل.
قم بتثبيت babel-cli
على سبيل المثال: yarn add babel-cli
ثم قم بتشغيل yarn babel-node --presets es2015 ./server.js
والذي يعتبر server.js
ملفًا في الدليل الحالي وهو خادم واجهة برمجة تطبيقات بسيط express
.
إنه ببساطة لا يعمل ويقول أن الملف غير موجود. ( Error: Cannot find module
)
لكن استخدامه مع npx
يعمل npx babel-node --presets es2015 ./server.js
BYK بقدر ما أعرف ، سيبحث npx عن الأمر الخاص بك على node_module/.bin/
على الجهاز المحلي وإذا لم يعثر على الأمر المناسب ، فسيحصل على حزمة من الويب إذا كان هناك أي شيء ويمكنك أن تكون دائمًا محدثًا .
لا تحصل الغزل على حزمة من الويب أثناء عدم تثبيتها على الجهاز المحلي.
هل يمكننا الحصول على yarnx
؟
@ light24bulbs لماذا بالذات؟
بصراحة أعتقد أن npx
أداة جيدة حتى لو كانت "npm inc." - تتمحور (مثل العديد من أدوات npm ، لكي نكون منصفين). لن يحل A yarnx
هذه المشكلة (ستكون بالضرورة تتمحور حول الغزل) ، لذلك لست متأكدًا من أنها ستكون فكرة جيدة.
من الناحية المثالية ، أفضل أن يقوم npx
باكتشاف مدير الحزم تلقائيًا لاستخدامه ، أو على الأقل للسماح بتكوينه داخل ملف rc. أقترح عرض هذه المشكلة عليهم ومعرفة ما سيقولونه. اعتمادًا على إجابتهم ، سنتمكن بعد ذلك من إجراء مناقشة مستنيرة 🙂
يتم دمج libnpx
ليست كذلك ، وفي الواقع ، هذا ما يستخدمه pnpx
من pnpm تحت الغطاء. لقد أضفت بعض التصحيحات لجعل ذلك ممكنًا لـ Zoltan. لن أقوم بإضافة دعم الاكتشاف التلقائي لأنه يزيل بعض التكامل ويجعل الأمور أكثر تعقيدًا ويصعب دعمها :)
فقط بحثت في Google عن هذه المشكلة وأعتقد أنه المكان المناسب للسؤال عن أي تحديثات. هل هناك أي أداة / حل موجود ، أو تخطط لإضافة بعض الوظائف إلى الغزل؟
على سبيل المثال ، مشاكلي الحالية مع npx هي:
npx gatsby new blog https://github.com/gatsbyjs/gatsby-starter-blog
)يبدو أن كلتا هاتين المشكلتين تشبهان تطابقًا مثاليًا لحل الغزل مثل
محدث: لذلك السبب الرئيسي الأساسي لـ ypx
الذي أذكره ليس التنفيذ الثنائي (وهو أمر جيد تمامًا مع الغزل) ، ولكن القدرة على التنزيل التلقائي للحزم التي أنوي تنفيذها.
أنا موافق. أعتقد أيضًا أن هناك فرصة لتحسين واجهات برمجة التطبيقات (API) الغريبة في NPM
بعض الشيء. أعتقد أن استدعاء yarn exec COMMAND
سيكون أكثر منطقية من
yarnx
. كان لدى Ruby bundler أمر مشابه جدًا
https://bundler.io/man/bundle-exec.1.html
يوم الاثنين 17 ديسمبر 2018 الساعة 2:29 مساءً Pavel Prokudin [email protected]
كتب:
فقط بحثت في Google عن هذه المشكلة وأعتقد أنه المكان المناسب للاستفسار عنها
أي تحديثات. هل هناك أي أداة / حل موجود ، أو خطة لإضافة البعض
وظيفة للغزل؟
على سبيل المثال ، مشاكلي الحالية مع npx هي:
- يقوم بتنزيل حزمة غائبة مع التبعيات في كل مرة ،
- يقوم بإنشاء package-lock.json في مشاريع Yarn الموجهة التي تسبب
تحذيرات وضرورة إزالته باليد.
(على وجه التحديد ، قمت للتو بتنفيذ مدونة npx gatsby الجديدة
https://github.com/gatsbyjs/gatsby-starter-blog)يبدو أن كلتا هاتين المشكلتين تشبهان تطابقًا مثاليًا لحل الغزل مثلphra
https://github.com/phra ذكر بالفعل كنقطة ثالثة له.-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/yarnpkg/yarn/issues/3937#issuecomment-447968558 ، أو كتم الصوت
الخيط
https://github.com/notifications/unsubscribe-auth/AAjhEng6juvpaK4xLx1KrVHccJAytnAfks5u5_CcgaJpZM4OY9aL
.
-
فورست
yarn exec
موجود بالفعل (بمعنى مختلف عما تقترحه) 🙂
نعم! عند إغلاق هذه المشكلة في الوقت الحالي ، لم أفهم بعد ما إذا كنا سنرغب في نقل الميزة إلى الإصدار 1 (ربما لا؟).
لست متأكدًا من أنه بديل جيد. يستغرق yarn dlx eslint --help
2.7 ثانية على جهازي بينما ينتهي npx eslint --help
في 0.2 ثانية. إذا طلب المرء الكثير من نصوص bin ، فسيؤدي ذلك بسرعة إلى إضافة القيم غير المقبولة.
أيضًا ، أعتقد أنه لا ينبغي كتابة stdout / stderr بواسطة الغزل ما لم يكن هناك خطأ ، للسماح بتحليل إخراج البرنامج النصي.
silverwind يبدو اختلاف التوقيت صارخًا تمامًا. هل هذا قابل للتكرار في عدة دورات متسقة؟ إذا كانت الإجابة بنعم ، فسأقدم مشكلة جديدة للتحقيق فيها لأننا بالتأكيد لا نريدها أن تكون بطيئة.
فيما يتعلق stdout / stderr من Yarn ، أعتقد أنه يمكنك استخدام yarn --silend dlx eslint
لقمع جميع مخرجات الغزل غير الحرجة. arcanis هل يمكنك تأكيد هذا الأخير؟
@ light24bulbs لماذا بالذات؟
بالنسبة لجميع الأشخاص الذين يجدون بعض الحزم على الويب ، راجع إرشادات التثبيت التي تتضمن npx something something
، لكنهم يريدون البقاء في عالم الغزل.
هل
yarn dlx
يحل هذه المشكلة؟
هل yarn dlx
هو بديل دقيق لـ s/npx/yarn dlx/
مقابل npx
؟ إذا لم يكن كذلك ، فلن يحل هذه المشكلة.
تجريبي
https://www.npmjs.com/package/create-react-app
$ yarn create react-app
$ npx create-react-app
$ npm init react-app
@ light24bulbs - لصدى rulatir ، جئت إلى هنا لأن دليل البدء السريع لـ Storybook ينص على استخدام npx
لتثبيته ، ولم يكن لدي وصفة سهلة لكيفية استخدام التعويذة المكافئة بـ yarn
. إذا كانت هناك مجموعة مكافئة من أوامر الغزل ، فيجب علينا نشرها على موقع الغزل على الويب ، بحيث تكون هذه الصفحة (بدلاً من هذا الموضوع) أعلى نتائج بحث Google عن "إصدار الغزل من npx".
أنا أيضًا على نفس المركب مثلcodekiln. عندما أتبع بعض الإرشادات التي تنص على تشغيل npx ...
، فليس لدي أي فكرة عما yarn
. مثال على ذلك هو npx tslint-to-eslint-config .
@ light24bulbs - لصدى rulatir ، جئت إلى هنا لأن دليل البدء السريع لـ Storybook ينص على استخدام
npx
لتثبيته ، ولم يكن لدي وصفة سهلة لكيفية استخدام التعويذة المكافئة بـyarn
. إذا كانت هناك مجموعة مكافئة من أوامر الغزل ، فيجب علينا نشرها على موقع الغزل على الويب ، بحيث تكون هذه الصفحة (بدلاً من هذا الموضوع) أعلى نتائج بحث Google عن "إصدار الغزل من npx".
نفس الشيء هنا ، مع دليل تثبيت capacitorjs https://capacitorjs.com/docs/getting-started ، فإن الشعور هو أن هذا يقنع المستخدم بالتخلي عن الغزل والعودة إلى npm
404: الصفحة غير موجودة
أعتقد أن delanym يعني هذه الصفحة (لكنني لا أعتقد أن هذا يكرر npx
): https://yarnpkg.com/cli/exec
التعليق الأكثر فائدة
sandys - المشكلة المشار إليها zkat (npm / npm # 6053) ليست مشكلة في
yarn
حيث يمكنك فقط تنفيذyarn x
(أوyarn run x
إذا كنت تريد ذلك صريح) إذا كانx
موجودًا في دليلك./node_modules/.bin
. لذلك لا أعتقد أن هناك حاجة ملحة لمعادلةnpx
.إذا كنت تعتقد أن هناك حاجة ماسة ، فهل يمكنك توضيح سبب حاجتك إليها؟ على سبيل المثال. ما المشكلة التي ستحلها لك؟