Что блокирует конкретную версию узла?
Это процесс использования инструмента блокировки для изоляции зависимостей конкретной версии вашего приложения 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
или более поздней версии, чтобы эта команда работала успешно.