Что блокирует конкретную версию узла?

Это процесс использования инструмента блокировки для изоляции зависимостей конкретной версии вашего приложения node.js.

Почему это важно?

  • Ваш проект полностью заблокирован и полностью доступен офлайн. Таким образом, установка выполняется намного быстрее.
  • Я собираюсь провести вас через простой процесс блокировки приложения Node.js с использованием .nvmrc , а также engines. В первой части я предполагаю, что вы используете Node Version Manager (nvm). Если вы хотите добавить это, ознакомьтесь с файлом readme nvm, который довольно информативен, что упрощает установку менеджера.

Использование .nvmrc

  • В своем проекте создайте файл.nvmrc, чтобы добавить версию узла. Вы можете использовать nvm —-help, чтобы проверить другие варианты. В этом руководстве мы собираемся использовать версию узла 8.9.0.
touch .nvmrc
  • Добавьте эту строку 8.9.0 в .nvmrc файл.
  • После этого выполните следующие команды:
nvm use
nvm install
nvm exec
nvm run
nvm which
  • nvm use ищет .nvmrc и использует его. Помните, нет трейлинга. пробелы разрешены. Требуется новая строка.

Использование двигателей

  • Поскольку некоторые соавторы проекта предпочитают не использовать диспетчер версий, использование движков является предпочтительным способом заблокировать определенную версию узла, которая охватывает этот пограничный случай.
  • Мы собираемся использовать engine-strict, который использует семантическое управление версиями (Semver).
  • Semver - это трехкомпонентная система в формате a.b.c, где a - основная версия, b - дополнительная версия, а c - исправление. Этот формат действительно полезен при управлении зависимостями, поэтому мы собираемся использовать его, чтобы указать версию узла нашего проекта.
  • Запустите эту команду в своем терминале, чтобы установить semver.
npm install semver
  • В вашем package.json вы должны увидеть добавленную "server" : "^5.5.0" или более позднюю версию.
  • Мы собираемся написать сценарий, чтобы проверить, что версия узла нашего проекта не ниже 8.9.0 или выше.
  • Создайте файл и назовите его check_node_version.js
touch check_node_version.js
  • Затем добавьте следующие простые строки кода.
const semver = require (‘semver’);
const { engines } = require (‘./package’);
const version = engines.node;
 if (!semver.satisfies(process.version, version)) {
  throw new Error(`The current node version${process.version} does not satisfy the required version ${version} .`);
}
  • Вам необходимо указать механизм узлов, который вы хотите использовать в своем package.json. Добавьте следующие строки кода в файлpackage.json, запускающий сценарий.
....
"engineStrict": true,
"engines": {
    "node": ">=8.9.0"
 },
“scripts”: {
   "requirements-check”: “node check_node_version.js”,
   “test”: “bundle exec rake cucumber && bundle exec rake rspec &&    bundle exec rake jasmine:ci”,
   “postinstall”: “./node_modules/bower/bin/bower install && npm run requirements-check”
},
...
  • Наконец, запустите npm install, чтобы убедиться, что ваша установка работает. Эта команда будет работать, только если у вас версия узла 8.9.0 или выше. Если у вас более ранняя версия, вам необходимо обновить ее до 8.9.0 или более поздней версии, чтобы эта команда работала успешно.