1.5.1 • Published 10 months ago

@astral/pack v1.5.1

Weekly downloads
-
License
MIT
Repository
-
Last release
10 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

10 months ago

1.5.0

10 months ago

1.4.3

10 months ago

1.4.2

10 months ago

1.4.1

10 months ago

1.4.0

10 months ago

1.3.0

10 months ago

1.2.2

10 months ago

1.2.1

10 months ago

1.2.0

10 months ago

1.1.0

10 months ago

1.0.0

10 months ago

0.1.0

10 months ago