update - Как я могу указать требуемую версию Node.js в package.json?




package.json latest version (4)

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


Есть еще один, более простой способ сделать это:

  1. npm install [email protected] (сохраняет Node 8 как зависимость в package.json)
  2. Ваше приложение будет работать с Node 8 для всех - даже для пользователей пряжи!

Это работает, потому что node - это просто пакет, который отправляет узел как двоичный пакет. Он просто включает как node_module / .bin, что означает, что он делает узел доступным только для скриптов пакета. Не основная оболочка.

Смотрите обсуждение в Twitter здесь: https://twitter.com/housecor/status/962347301456015360


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

чек-version.js:

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

const version = engines.node;
if (!semver.satisfies(process.version, version)) {
  console.log(`Required node version ${version} not satisfied with current version ${process.version}.`);
  process.exit(1);
}

package.json:

{
  "name": "my package",
  "engines": {
    "node": ">=50.9" // intentionally so big version number
  },
  "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' может использоваться для запроса конкретной версии узла - https://github.com/creationix/nvm#nvmrc

Но это только уважают сценарии npm (и сценарии пряжи).


Я думаю, что вы можете использовать поле «двигатели»:

{ "engines" : { "node" : ">=0.12" } }

Поскольку вы говорите, что ваш код определенно не будет работать с какими-либо более низкими версиями, вы, вероятно, тоже захотите установить флаг engineStrict

{ "engineStrict" : true }

Документацию по файлу package.json можно найти на сайте npmjs.

Обновить

engineStrict теперь не рекомендуется, так что это будет только предупреждение. Теперь пользователь может запустить npm config set engine-strict true если он этого хочет.


добавлять

в package.json

  "engines": {
    "node": ">=10.0.0",
    "npm": ">=6.0.0"
  },

в файл .npmrc (рядом с package.json , тот же каталог)

engine-strict=true






version