Установите ту же версию узла на основе движков, указанных в package.json, для задач разработки и развертывания.

Что я часто замечаю в проектах узлов, так это то, что вы быстро добираетесь до точки, где определена версия, относящаяся к проекту, и ее необходимо поддерживать в разных местах, например. различные шаблоны пайплайнов.

В идеале, однако, я хотел бы поддерживать версию узла только в одном месте и, таким образом, в то же время гарантировать, что все разработчики используют одну и ту же версию узла, которая также используется автоматизацией CI/CD проекта.

Мы рассмотрим один из возможных подходов к достижению этой цели прямо сейчас!

Применение определенных версий node и npm

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

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

Использование одной и той же версии узла в автоматизации CI/CD

После того, как версия узла была определена с помощью параметра «движки» в package.json, теперь в идеале она также должна использоваться конвейерами CI/CD. Для этого нам нужно прочитать соответствующую информацию из этого файла.

Все, что нам нужно сделать, это написать небольшой скрипт, который сохраняет версию в переменной. Конечно, есть разные способы добиться этого. Для чтения версии мы в данном случае используем jq, процессор командной строки JSON.

Ниже приведены два примера соответствующих задач в GitHub Actions и Azure Pipelines, но, конечно, этот подход работает одинаково и для любого другого поставщика:

Заключение

Лично я нахожу показанный подход довольно удобным и использую его также для всех своих личных проектов на GitHub. Конечно, я понимаю, что определенно есть проекты, в которых требуется использование разных версий узлов, и поэтому показанный здесь подход неприменим.