Скрипты, не зависящие от пакетов, с Node.js

Как упростить запуск скриптов в NPM, Yarn и PNPM

Если в вашем package.json-файле есть пользовательские сценарии, такие как «npm my-script» или «yarn my-script», они будут работать только с определенным вами менеджером пакетов. Но NPM предлагает API для вызова текущего исполняемого файла каждый раз без его явного указания.

{
  "scripts": {
    "cleanup": "./clean-up.js",
    "copy": "./copy.js",
    "prepare": "npm run cleanup && npm run copy"
  }
}

Использование $npm_execpath

Используя строку «$npm_execpath» вместо «npm» или «yarn» (или другого менеджера пакетов, такого как «pnpm»), этот скрипт будет работать с каждым менеджером пакетов, независимо от того, как текущий разработчик использовал исходный скрипт. .

{
  "scripts": {
    "cleanup": "./clean-up.js",
    "copy": "./copy.js",
    "prepare": "$npm_execpath run cleanup && $npm_execpath run copy"
  }
}

Он совместим со всеми машинами?

К сожалению, использование «$npm_execpth» для работы скриптов с любым менеджером пакетов не работает надежно на машинах с установленной Windows.

Каков самый надежный способ вызова скриптов в package.json?

Таким образом, самый надежный способ вызова ваших пользовательских сценариев в файле package.json по-прежнему заключается в том, чтобы явно определить исполняемый файл диспетчера пакетов и убедиться, что ваша команда использует только его.

Это лучше на устройствах, которые не работают под управлением Windows, где вы можете использовать «$ npm_execpath» для надежного выполнения этих сценариев.