Если вы даже опубликуете пакет/или разрешаете установку через 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”