Если вы даже опубликуете пакет/или разрешаете установку через GitHub.
npm i custom-package # From NPM registry npm i ${REPO}/custom-package # From GitHub repo main branch
Затем вы столкнетесь с проблемой пакета, нельзя установить из -за неправильной конфигурации package.json
{ "engines": { "node": "14", "npm": "please-use-yarn", "yarn": "1", "pnpm": "please-use-yarn" }, "engineStrict": true }
Решение
echo 'engine-strict=true' >> .npmrc
Проблема команда NPM игнорировала
Кажется, что Enginestrict: true
(in package.json
) не работает в первую очередь. Только для пряжи, PNPM.
Но echo '>> .npmrc
работает.
Проблемная команда пряжи игнорировалась
У него есть предупреждение о пряже для недействительной package.json
, в том числе двигатели
Анкет
Visual Studio Code Требуется его расширения включают "Vscode"
Собственность в "Двигатели"
поле в package.json
. Однако пряжа
не знает, что это может быть действительный двигатель, и выпускает предупреждение:
yarn add v1.22.4 [1/5] Validating package.json... warning my-extension@0.0.1: The engine "vscode" appears to be invalid.
Итак, где это не предупреждает в первую очередь, зависит от официальной команды пряжи? Это жестко кодируется пряжей. Это также происходит, когда кто -то другой использовал PNPM для публикации пакета.
Проблема ожидается для PNPM
Я также думаю, что это может быть трудно исправить. Это может пойти так далеко, следующий крупный релиз, или получил Wontfix
.
версия PNPM:
5.13.5
Код для воспроизведения проблемы:
nvm install 12 nvm install 14 nvm alias default 12 echo '14' > .nvmrc nvm use echo 'engine-strict=true' >> .npmrc # add `engineStrict: true` in `package.json` also works
Затем добавьте двигатели
поле в Package.json
Анкет
{ "engines": { "node": "14" } }
Ожидаемое поведение:
Нет ошибок, успешно установите.
Фактическое поведение:
❯ pnpm i ERROR Your Node version is incompatible with "/home/patarapolw/projects/aloud-comments". Expected version: 14 Got: v12.19.0 This is happening because the package's manifest has an engines.node field specified. To fix this issue, install the required Node version.
Другой способ воспроизвести
- Удалить
Двигатель Strict = true
- Добавить
Узел -Версия
в раздел сценариев
Found '/home/patarapolw/projects/aloud-comments/.nvmrc' with version <14> Now using node v14.15.1 (npm v6.14.8) ❯ pnpm node:version > aloud-comments@0.2.3 node:version /home/patarapolw/projects/aloud-comments > node --version v12.19.0
Еще один способ воспроизвести
pnpm i @stencil/core
Found '/home/patarapolw/projects/aloud-comments/.nvmrc' with version <14> Now using node v14.15.1 (npm v6.14.8) ❯ pnpm serve > aloud-comments@0.2.3 serve /home/patarapolw/projects/aloud-comments > stencil build --dev --watch --serve Your current version of Node is v12.19.0, however Stencil's recommendation is v14.5.0 or greater. Note that future versions of Stencil will eventually remove support for non-LTS Node versions and an Active LTS version is recommended (https://nodejs.org/en/about/releases/).
Конечно, Tencil Team сказала, что это ваша ошибка; не их.
Дополнительная информация:
- Windows, MacOS или Linux?: Ubuntu 20.04 на WSL2
❯ node -v v14.15.1 ❯ cat /proc/version Linux version 4.19.128-microsoft-standard (oe-user@oe-host) (gcc version 8.2.0 (GCC)) #1 SMP Tue Jun 23 12:58:10 UTC 2020 ❯ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.1 LTS Release: 20.04 Codename: focal
Блокирующего сценария Preinstall недостаточно
PNPM Run
Все еще возьмите неправильную версию node.js …NPM Publish
,Yarn Publish
,PNPM Publish
Все работают по -другому.двигатель-строк
может хорошо заблокировать для этого случая.- Я предпочитаю
Yarn Publish
большинство.
- Я предпочитаю
Оригинал: “https://dev.to/patarapolw/enginestrict-true-in-package-json-is-problematic-don-t-3cli”