Featured image of post Что такое npx? Почему он может выполнять пакеты без установки?

Что такое npx? Почему он может выполнять пакеты без установки?

Раскройте секреты npx! Выполнять пакеты, не устанавливая их? Решите проблемы глобальной установки npm и ощутите быструю, точную и эффективную разработку Vibe Coding.

Вам когда-нибудь приходилось использовать npm install -g для установки инструмента (например, create-next-app или eslint) только для того, чтобы запустить его? Со временем ваш компьютер накапливает старые версии глобальных пакетов, установленных неизвестно когда, что превращает среду в хаос.

Если бы был способ выполнять функции пакета, где

Цель Описание
Использование последней версии Вызов последней версии инструмента только при необходимости
Отсутствие занимаемого места Использовать и выбросить, абсолютно не занимая места, когда это не нужно

Это момент, когда на сцену выходит npx.

Основная концепция npx: “Флешмоб” мира программирования

Представьте, что вы сегодня хотите съесть острый хот-пот.

Режим Описание
npm install Вы покупаете полный набор кастрюль, сковородок, плитку и основу для супа (хранящиеся локально или глобально). Они у вас есть всегда, когда вы захотите поесть позже, но они занимают много места на кухне, и если их долго не мыть, они покрываются плесенью (версия устарела).
npx Вы звоните “флеш-повару”, чтобы он принес оборудование прямо к вам домой, приготовил эту еду, помыл кастрюлю и ушел. Ваша кухня остается чистой, и это гарантирует, что повар каждый раз приносит самую свежую основу для супа.

Этот режим “только аренда” является воплощением духа Vibe Coding:

Стремитесь к минималистичной среде, всегда используйте последнюю версию и сосредоточьте энергию на создании ценности, а не на поддержании беспорядка в среде.

Логика поиска: больше, чем просто скачать и запустить

Когда вы вводите npx <имя-пакета>, запускается логика процесса “поиск исполняемой программы”:

Процесс Описание
1. Сначала проверьте дома Проверьте, существует ли команда уже в локальном node_modules/.bin проекта или в глобальной среде.
2. Скачать, если не найдено Если не найдено, он автоматически переходит в реестр npm, чтобы получить “временную версию”.
3. Отбросить после выполнения После выполнения команды этот пакет не останется на вашем компьютере, занимая место.

Это особенно заметно при выполнении локальных пакетов проекта. Раньше нам приходилось запускать ./node_modules/.bin/tailwind-cli, путь достаточно длинный, чтобы заставить вас плакать; теперь просто смело введите в корне проекта:

npx tailwind-cli build

Это как сообразительный дворецкий, который знает, что вы установили в своем проекте, и напрямую помогает вам выровнять путь для выполнения.

Как npx узнает, какую команду пакета выполнять?

Вам может быть интересно, для команд типа npx skills add vercel-labs/agent-skills, как npx находит облачный код по одному слову?

Это благодаря удостоверению личности пакета package.json. В настройках пакета разработчики определяют поле bin:

{
  "name": "skills",
  "bin": {
    "skills": "./bin/cli.mjs",
    "add-skill": "./bin/cli.mjs"
  }
}

Это действует как “внешнее окно” пакета. Когда вы вызываете npx skills, происходит следующее:

Шаг Описание
1 npx переходит в реестр npm для поиска пакета с именем skills
2 Выполняет скрипт, зарегистрированный в его bin.

Что касается “как построить дом (add установка пакета)”, то это профессиональная техника этого пакета (пакет skills).

Продвинутые советы: имя и команда не совпадают?

Что, если имя пакета tools-package, но команда называется run-me? Или что, если вы хотите указать конкретную старую версию для тестирования?

На этом этапе мы перестаем полагаться на автопилот и переключаемся на метод “указать пакет”:

npx -p [email protected] run-me "Show me the way"
Команда Описание
-p [email protected] Говорит npx получить этот конкретный пакет для вас.
run-me Это команда, которую вы хотите запустить.

Заключение

npx полностью изменил нашу привычку использовать инструменты CLI. Он позволяет разработчикам управлять инструментами более легким и гибким способом, больше не будучи связанными сложными настройками среды.

Этот элегантный процесс “вездесущий, доступный по вызову” позволяет вам выполнять задачи быстро, точно и безжалостно в ритме Vibe Coding!

Reference

All rights reserved,未經允許不得隨意轉載
Создано при помощи Hugo
Тема Stack, дизайн Jimmy