<p>ما يعادل غزل npx؟</p>

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

كيف يوصي الغزل بأن نستخدم npx (هذا الآن جزء أساسي من npm - https://github.com/npm/npm/pull/17685).

في الأساس ، تعمل إلى حد ما مثل "bundle exec" لروبي ، بخلاف أنها تطلق مدير الحزم إذا كانت التبعيات مفقودة. سيؤدي هذا إلى تجنب الغزل والعودة إلى npm.

هل هناك خطة لإنشاء مكافئ "ypx" يستفيد من الغزل للقيام بذلك؟

cat-feature

التعليق الأكثر فائدة

sandys - المشكلة المشار إليها zkat (npm / npm # 6053) ليست مشكلة في yarn حيث يمكنك فقط تنفيذ yarn x (أو yarn run x إذا كنت تريد ذلك صريح) إذا كان x موجودًا في دليلك ./node_modules/.bin . لذلك لا أعتقد أن هناك حاجة ملحة لمعادلة npx .

إذا كنت تعتقد أن هناك حاجة ماسة ، فهل يمكنك توضيح سبب حاجتك إليها؟ على سبيل المثال. ما المشكلة التي ستحلها لك؟

ال 35 كومينتر

بالنسبة لما يستحق ، أعتقد أن 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 لأنه يمكنك:

  1. قم بتشغيل أمر حزمة محلية في ./node_modules/.bin/ في الدليل الحالي
  2. إذا لم تكن الحزمة موجودة محليًا أو لم يكن الدليل ./node_modules/ موجودًا ، فقم بتنزيل الحزمة في دليل مؤقت مع تبعياتها واستدعاء الأمر

يتم ذلك بشفافية للمستخدم.

يمكن أن يقدم الافتراض ypx نقطة ثالثة وهي:

  1. إذا لم تكن الحزمة موجودة محليًا وكانت موجودة في ذاكرة التخزين المؤقت للغزل وكانت تتطابق مع أحدث إصدار ، فاستدع الأمر باستخدام ذاكرة التخزين المؤقت بدلاً من تنزيل جميع الحزم

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 هي:

  1. يقوم بتنزيل حزمة غائبة مع التبعيات في كل مرة ،
  2. يقوم بإنشاء package-lock.json في مشاريع موجهة نحو الغزل والتي تسبب تحذيرات وتحتاج إلى إزالتها باليد.
    (على وجه التحديد لقد قمت للتو بتنفيذ 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 هي:

  1. يقوم بتنزيل حزمة غائبة مع التبعيات في كل مرة ،
  2. يقوم بإنشاء 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 موجود بالفعل (بمعنى مختلف عما تقترحه) 🙂

هل yarn dlx يحل هذه المشكلة؟

تضمين التغريدة

https://yarnpkg.github.io/berry/cli/dlx

نعم! عند إغلاق هذه المشكلة في الوقت الحالي ، لم أفهم بعد ما إذا كنا سنرغب في نقل الميزة إلى الإصدار 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 ؟ إذا لم يكن كذلك ، فلن يحل هذه المشكلة.

إنشاء الغزل و npx & npm init

تجريبي

https://www.npmjs.com/package/create-react-app

$ yarn create react-app

$ npx create-react-app

$ npm init react-app

image

https://www.npmtrends.com/npm-vs-npx-vs-yarn

image

@ 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

https://yarnpkg.com/en/docs/cli/exec

404: الصفحة غير موجودة

أعتقد أن delanym يعني هذه الصفحة (لكنني لا أعتقد أن هذا يكرر npx ): https://yarnpkg.com/cli/exec

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