<p>пряжа эквивалент npx?</p>

Созданный на 15 июл. 2017  ·  35Комментарии  ·  Источник: yarnpkg/yarn

как yarn рекомендует использовать npx (теперь это основная часть npm - https://github.com/npm/npm/pull/17685).

По сути, он действует как «bundle exec» ruby, за исключением того, что запускает диспетчер пакетов, если зависимости отсутствуют. Это отодвинет пряжу в сторону и снова переключится на npm.

Есть ли план создать эквивалент «ypx», который использует для этого пряжу?

cat-feature

Самый полезный комментарий

@sandys - проблема, на которую ссылается yarn так как вы можете просто сделать yarn x (или yarn run x если хотите явное), если x находится в вашем каталоге ./node_modules/.bin . Так что я не думаю, что есть острая необходимость в эквиваленте npx .

Если вы считаете, что в этом есть острая необходимость, можете ли вы объяснить, зачем вам это нужно? Например. какую проблему это решит для вас?

Все 35 Комментарий

Как бы то ни было, я думаю, что npx был вдохновлен «yarn create», который похож, но работает только для пакетов с префиксом «create-». Не уверен, какие здесь планы.

Ага, в настоящее время у нас есть yarn create (например, попробуйте использовать yarn create react-app ). Возможно, в будущем мы откроем его для других глаголов, но этого пока нет в планах.

Я работаю над библиотекой npx. Нетрудно получить существующий код npx и просто заменить связанные с npm кишки командами, эквивалентными пряжи.

Я не буду добавлять это непосредственно к самому npx, поскольку это _значительно_ быть агностиком: npx не выполняет операций, которые конфликтуют с людьми, использующими другие менеджеры пакетов. Для этого даже не требуется, чтобы npm был в системе, поэтому вы можете npm rm -g npm и npx будет работать нормально. Таким образом, вы могли бы сказать npx _is_ ypx , если только вы не очень серьезно относитесь к совместному использованию кеша, что является прекрасной вещью.

(Вдохновляю: npx в первую очередь вдохновлен этим давним запросом на функцию: https://github.com/npm/npm/issues/6053. Большая часть его функциональности сосредоточена на удовлетворении _этой_ потребности. Добавлена ​​функция автоматической установки. post-yarn-create, и определенно призван стать фактическим обобщенным решением для этой конкретной вещи - но он делает _ намного больше_, чем это)

@sandys - проблема, на которую ссылается yarn так как вы можете просто сделать yarn x (или yarn run x если хотите явное), если x находится в вашем каталоге ./node_modules/.bin . Так что я не думаю, что есть острая необходимость в эквиваленте npx .

Если вы считаете, что в этом есть острая необходимость, можете ли вы объяснить, зачем вам это нужно? Например. какую проблему это решит для вас?

Кто-нибудь знает, похож ли yarn exec на bundle exec ? Я вижу это в интерфейсе командной строки, но не в документации на веб-сайте. Быстрая игра с yarn exec в командной строке кажется, что она запускает установленные двоичные файлы, поэтому это может решить вашу проблему @sandys.

FWIW, npm-run - это более старая утилита, которая позволяет запускать локальные node_modules двоичные файлы, и она не зависит от npm . Однако у него нет никаких опций, тогда как npx полон ручек.

@BYK Пример использования выполняется, например, ypx greenkeeper-lockfile@1 или ypx danger@2 на CI без добавления их в качестве зависимостей в сам проект

@SimenB CI обычно не

@MarkBennett Поскольку yarn exec не запускает скрипты из package.json я не думаю, что это подходящее место для добавления этой функции.

@BYK Я не ОП, но я пришел к этому запросу функции, потому что у меня был пакет на моем локальном компьютере, но не в моем package.json. Поэтому мое приложение будет работать для меня, но не для всех, кто установил мое приложение чисто. Это особенность bundle exec сборщика ruby, которая мне нравится - она ​​не будет работать, если все зависимости не указаны в манифесте.

Моя основная жалоба на 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 другой 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 api.
Просто не работает и говорит, что файла не существует. ( Error: Cannot find module )
Но использование его с npx работает npx babel-node --presets es2015 ./server.js

@BYK, насколько я знаю, npx будет искать вашу команду на node_module/.bin/ на локальном компьютере, и если он не нашел подходящей команды, он получит пакет из Интернета, если он есть, и вы всегда можете быть в курсе .
yarn не получает пакет из Интернета, пока он не установлен на локальном компьютере.

Можем ли мы получить yarnx ?

@ light24bulbs, почему именно?

Честно говоря, я думаю, что npx - хороший инструмент, даже если он слишком ориентирован на "npm inc." (Как и многие другие инструменты npm, если честно). yarnx не решит эту проблему (он обязательно будет ориентирован на пряжу), поэтому я не слишком уверен, что это будет хорошая идея.

В идеале я бы предпочел, чтобы npx автоматически определял используемый диспетчер пакетов или, по крайней мере, позволял настраивать его внутри файла rc. Я предлагаю передать им этот вопрос и посмотреть, что они скажут. В зависимости от их ответа мы сможем провести информированное обсуждение 🙂

Сам @arcanis npx комбинируется с npm, потому что он связан с npm - libnpx нет, и фактически это то, что pnpx из pnpm использует под капотом. Я добавил пару патчей, чтобы сделать это возможным для Золтана. Я не буду добавлять поддержку автоопределения, потому что это убирает часть интеграции и делает вещи более сложными и трудными для поддержки :)

Просто погуглил эту проблему, и я думаю, что это подходящее место, чтобы спрашивать о любых обновлениях. Есть ли какой-либо существующий инструмент / решение или планируете добавить некоторые функции в пряжу?
Например, мои текущие проблемы с npx:

  1. он каждый раз загружает отсутствующий пакет с зависимостями,
  2. он создает package-lock.json в проектах, ориентированных на Yarn, что вызывает предупреждения и требует удаления вручную.
    (в частности, я только что выполнил npx gatsby new blog https://github.com/gatsbyjs/gatsby-starter-blog )

Обе эти проблемы выглядят идеально подходящими для решения такой пряжи, как @phra, уже упомянутой в качестве его третьего пункта.

UPD: Итак, основная причина ypx я упоминаю, - это не двоичное выполнение (что совершенно нормально для yarn), а возможность автоматической загрузки пакетов, которые я собираюсь выполнить.

Я согласен. Я также думаю, что есть возможность улучшить странный API NPM
немного. Я думаю, что вызов yarn exec COMMAND будет иметь больше смысла, чем
yarnx . У сборщика Ruby была очень похожая команда
https://bundler.io/man/bundle-exec.1.html

В пн, 17 декабря 2018 г., в 14:29 Павел Прокудин [email protected]
написал:

Просто погуглил эту проблему, и я думаю, что это подходящее место, чтобы спросить о
любые обновления. Есть ли какой-либо существующий инструмент / решение или планируете добавить некоторые
функциональность пряжи?
Например, мои текущие проблемы с npx:

  1. он каждый раз загружает отсутствующий пакет с зависимостями,
  2. он создает package-lock.json в проектах, ориентированных на пряжу, что вызывает
    предупреждения и необходимо удалить его руками.
    (в частности, я просто выполняю новый блог 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 эту проблему?

cc @sandys @arcanis

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

Ага! На данный момент закрывая эту проблему, я еще не понял, хотим ли мы перенести эту функцию в версию 1 (возможно, нет?).

Не уверен, что это достойная замена. yarn dlx eslint --help на моей машине занимает 2,7 секунды, а npx eslint --help завершается за 0,2 секунды. Если вызвать много сценариев bin, это быстро приведет к недопустимым значениям.

Кроме того, я думаю, что stdout / stderr не следует записывать с помощью yarn, если нет ошибки, чтобы разрешить синтаксический анализ вывода сценария.

@silverwind разница во времени кажется довольно большой. Воспроизводится ли это последовательно в нескольких прогонах? Если да, я бы отправил новую проблему для расследования, поскольку мы, конечно же, не хотим, чтобы она была медленной.

Что касается stdout / stderr из Yarn, я _ думаю_, что вы можете использовать yarn --silend dlx eslint для подавления всего некритического вывода Yarn. @arcanis, можешь подтвердить последнее?

@ light24bulbs, почему именно?

Для всех, кто нашел какой-либо пакет в Интернете, обратите внимание на то, что инструкции по установке включают npx something something , но хотят остаться в мире пряжи.

Решает ли новый yarn dlx эту проблему?

yarn dlx - точная замена s/npx/yarn dlx/ на npx ? Если нет, то это не решает проблему.

попробуй это
https://www.npmjs.com/package/ynpx

пряжа создать & 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».

То же самое и здесь, с руководством по установке конденсатора js 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 рейтинги