Рубрики
Без рубрики

`Enginestrict: true` in package.json проблематично – не

Если вы даже опубликуете пакет / или разрешаете установку через GitHub. npm i custom-package #… Tagged с помощью NPM, узла, JavaScript, PNPM.

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