8

Как указать необходимую версию Node.js в файле package.json?

4

У меня есть проект на Node.js, который требует версии Node 12 или выше. Можно ли указать это в файле packages.json, чтобы установщик автоматически проверял и информировал пользователей, если им нужно обновить версию Node?

4 ответ(ов)

3

Чтобы задать необходимые версии npm и node для вашего проекта, вам нужно добавить следующий фрагмент в ваш файл package.json:

"engines": {
  "npm": ">=8.0.0 <9.0.0",
  "node": ">=16.0.0 <17.0.0"
},

Этот код указывает, что ваш проект требует npm версии не ниже 8.0.0 и не выше 9.0.0, а также node версии не ниже 16.0.0 и не выше 17.0.0.

После этого добавьте следующую строку в файл .npmrc, который должен находиться в том же каталоге, что и package.json:

engine-strict=true

С помощью этого параметра установка зависимостей будет строго проверять версии node и npm, указанные в вашем package.json. Если эти версии не соответствуют требованиям, установка зависимостей будет предотвращена.

0

Как уже упомянул Ibam, engineStrict теперь устарел. Но я нашел вот такое решение:

check-version.js:

import semver from 'semver';
import { engines } from './package';

const version = engines.node;
if (!semver.satisfies(process.version, version)) {
  console.log(`Требуемая версия Node.js ${version} не соответствует текущей версии ${process.version}.`);
  process.exit(1);
}

package.json:

{
  "name": "my package",
  "engines": {
    "node": ">=50.9" // намеренно так большой номер версии
  },
  "scripts": {
    "requirements-check": "babel-node check-version.js",
    "postinstall": "npm run requirements-check"
  }
}

Подробнее об этом можно прочитать здесь: https://medium.com/@adambisek/how-to-check-minimum-required-node-js-version-4a78a8855a0f#.3oslqmig4

.nvmrc

Еще одна важная деталь. Файл '.nvmrc' можно использовать для указания конкретной версии Node.js - https://github.com/creationix/nvm#nvmrc

Обратите внимание, что он учитывается только в скриптах npm (и yarn).

0

Есть более простой способ сделать это:

  1. Выполните команду npm install node@8 (это добавит Node 8 в зависимости вашего package.json).
  2. Ваше приложение будет работать с Node 8 для всех - даже для пользователей Yarn!

Это работает, потому что node — это просто пакет, который поставляется с Node в качестве бинарного файла пакета. Он включает его в node_modules/.bin, что означает, что Node доступен только для скриптов пакета, а не для настроек оболочки.

Обсуждение на эту тему можно найти в Twitter: https://twitter.com/housecor/status/962347301456015360

0

В данном случае строка "engines": { "node": ">=20.0.0" } определяется в файле package.json вашего проекта и указывает минимальную версию Node.js, необходимую для его работы. Здесь используется оператор >=, который означает, что необходимо использовать Node.js версии 20.0.0 или новее. Это является хорошей практикой, так как позволяет гарантировать, что проект будет работать с нужной версией среды выполнения. Если у вас возникли проблемы с версией Node.js, убедитесь, что у вас установлена соответствующая версия или более новая.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь