1.5.1 • Published 5 months ago

@astral/pack v1.5.1

Weekly downloads
-
License
MIT
Repository
-
Last release
5 months ago

@astral/pack

Инструмент для сборки и релиза npm пакетов:

  • Собирает пакеты в esm и cjs
    • Копирует статичные файлы
    • Генерирует package.json
  • Semantic-release
    • Проверяет актуальную версию пакета
    • Создает релиз в gitlab и тэг в git

Installation

npm i --save @astral/utils
yarn add @astral/utils

Build

pack.config.js

const { defineConfig } = require('@astral/pack');

module.exports = defineConfig({
  target: 'web',
  // Сборка в esm и cjs
  format: ['esm', 'cjs'],
  tsConfigName: 'tsconfig.build.json',
  // Скопирует файлы в lib директорию
  copyStaticFiles: {
    filter: ['src/**/*.d.ts'],
    ignoreSrc: true,
  },
  // Добавит к root exports дополнительный
  packageExports: {
    './server': {
      module: './server/index.js',
      require: './node/server/index.js',
      types: './server/index.d.ts',
    },
  },
});
pack build --package-version=1.0.0

Build в связке с sematic-release

Запишет в .pack/versions.json новую версию пакета на основе анализа коммитов:

pack check-package-version

Заберет новую версию пакета из .pack/versions.json

pack build

Создание релиза в git и gitlab

pack create-release

Создаст git тэг и релиз в gitlab.

Exports

По-дефолту добавляет exports вида:

{
  '.': {
    module: './index.js',
    require: './node/index.js',
    types: './index.d.ts'
  },
}

Для добавления доп. exports необходимо использовать packageExports в pack.config.js:

module.exports = {
  packageExports: {
    './server': {
      module: './server/index.js',
      require: './node/server/index.js',
      types: './server/index.d.ts',
    },
  },
};

Синхронный релиз пакетов

Для того чтобы deps пакета были синхронизированы с основным пакетом необходимо использовать semanticRelease.releaseGroup:

module.exports = {
  semanticRelease: {
    repositoryUrl: 'https://git.astralnalog.ru/frontend.shared/pack',
    releaseGroup: ['@astral/validations'],
  },
};

@astral/validations будет иметь после сборки ту же версию, что и основной пакет.

Удаление свойств package.json

Для удаления свойств package.json необходимо использовать omitPackageJsonProps:

module.exports = defineConfig({
  ...config,
  omitPackageJsonProps: ['engines'],
});

Результирующий package.json не будет содержать engines.

Отправка уведомлений в telegram

Отправляет в telegram уведомление об успешном релизе пакета:

pack send-telegram-success-release --telegram-bot-token=$TELEGRAM_ASTRAL_UI_BOT_TOKEN --telegram-chat-id=$TELEGRAM_RELEASES_CHANNEL_ID

Пример сообщения:

🚀 Опубликован @astral/pack версии: 1.0.0

👀 Changelog:https://git.astralnalog.ru/frontend.shared/pack/-/releases/v1.0.0

Отправляет в telegram уведомление об ошибке релиза пакета:

pack send-telegram-fail-release --telegram-bot-token=$TELEGRAM_ASTRAL_UI_BOT_TOKEN --telegram-chat-id=$TELEGRAM_RELEASES_CHANNEL_ID --telegramPipelineUrl=$CI_PIPELINE_URL

Пример сообщения:

‼️Ошибка релиза @astral/pack
https://git.astralnalog.ru/frontend.shared/pack/-/pipelines/270356
1.5.1

5 months ago

1.5.0

5 months ago

1.4.3

5 months ago

1.4.2

5 months ago

1.4.1

5 months ago

1.4.0

5 months ago

1.3.0

5 months ago

1.2.2

5 months ago

1.2.1

5 months ago

1.2.0

5 months ago

1.1.0

5 months ago

1.0.0

5 months ago

0.1.0

5 months ago