Corepack предоставляет разработчикам Node новые возможности упаковки!

С выпуском Node.js 16.9.0 появился новый инструмент под названием Corepack. Corepack описывается как сценарий узла с нулевой зависимостью от времени выполнения, который действует как мост между проектами узла и менеджерами пакетов, такими как Yarn и Pnpm. Node.js поставляется с менеджером пакетов под названием NPM, который устанавливается вместе с Node.js каждый раз, когда Node.js устанавливается на компьютер или сервер.

Таким образом, по сути, Corepack позволяет нам использовать сторонние менеджеры пакетов без необходимости устанавливать их глобально на наши компьютеры разработки или наши серверы сборки.

Хотя NPM, скорее всего, является крупнейшим диспетчером пакетов, многие организации должны учитывать некоторые соображения при выборе диспетчера пакетов для своих нужд. Многие организации не могут использовать NPM, потому что, когда у разработчиков Node.js есть зависимости для своего приложения, они копируются в подкаталог с именем node_modules. Большинство серверов и процессов CI / CD не позволяют серверу сборки получать доступ к модулям из-за пределов их сети или выгружать их. Это была одна из причин, по которой была изобретена Yarn. Yarn и PNPM могут как архивировать, так и кэшировать модули на компьютере разработчика, а также в пакетах, которые могут храниться в исходном коде приложения.

Представляем Corepack

Corepack - это сценарий, включенный в Node.js, доступ к которому можно получить из командной строки. В нем есть команды, специально предназначенные для включения, отключения, подготовки и обновления менеджеров пакетов. Поскольку это все еще считается экспериментальной функцией, по умолчанию она отключена. Чтобы включить Corepack, просто введите следующую команду в свой терминал;

> corepack enable

Вы также можете включить определенную оболочку диспетчера пакетов, указав ее имя после enable. В следующем примере мы включим только прокладку для yarn.

> corepack enable yarn

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

> corepack disable

Активация диспетчера пакетов

В этом примере я собираюсь активировать менеджер пакетов yarn. С Corepack вы можете активировать один менеджер пакетов, все менеджеры пакетов или определенную версию менеджера пакетов. Мы установим конкретную версию менеджера пакетов yarn;

> corepack prepare [email protected] --activate

Это установит версию пряжи 1.22.11 и активирует ее для нашего проекта. После активации нашего диспетчера пакетов мы можем запускать существующие команды диспетчера пакетов с помощью Corepack. Если мы хотим добавить модуль с помощью определенного диспетчера пакетов, мы просто добавляем эти команды к команде corepack;

> corepack yarn add axios

Если бы yarn была установлена ​​глобально, это сработало бы так же, если бы мы просто запустили yarn add axios. Если мы посмотрим на файл package.json, он будет иметь зависимость для axios. У нас также есть параметр packageManager в нашем файле package.json, в котором перечислены менеджеры пакетов, которые мы хотим использовать в нашем проекте.

{
  "name": "sampleproject",
  "version": "1.0.0",
  "main": "index.js",
  "type": "module",
  "license": "MIT",
  "scripts": {
    "start": "node index.js"
  },
  "packageManager": "[email protected]",
  "dependencies": {
    "axios": "^0.21.4"
  }
}

Архивирование и распространение наших менеджеров пакетов

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

Чтобы заархивировать наш менеджер пакетов, мы можем добавить флаг вывода -o при использовании команды prepare.

> corepack prepare [email protected] --activate -o

Это добавит corepack.tgz файл в наш проект, который включает наш менеджер пакетов. Если мы скопируем исходный код нашего проекта на другой компьютер, мы можем разархивировать диспетчер пакетов с помощью следующей команды hydrate:

> corepack hydrate --activate corepack.tgz

Вывод

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

Прямо сейчас Corepack является только предварительной версией, но, установив и используя последнюю версию Node.js, вы можете начать знакомство с этим новым инструментом, прежде чем он станет частью выпуска по умолчанию.

Первоначально опубликовано на https://fek.io.