import {Meta} from '@storybook/addon-docs/blocks'

<Meta title='@dxtmisha/vi/scripts/Classes/BuildPublishPackages - Bộ công bố gói Monorepo' />

# Lớp BuildPublishPackages

Lớp `BuildPublishPackages` là một tiện ích chịu trách nhiệm công bố tự động các gói npm trong không gian làm việc monorepo. Nó quét thư mục `packages`, xác định các thay đổi phiên bản so với bộ nhớ đệm nhật ký cục bộ và công bố các gói đã cập nhật lên npm.

## Các tính năng chính

- **Tự động quét thư mục** — Quét thư mục gói (`packages/`) để tìm các thư mục chứa tệp `package.json` hợp lệ.
- **Bộ nhớ đệm tăng dần theo phiên bản** — So sánh phiên bản gói với dữ liệu trong `./logs/ui-publish.log.json` để ngăn việc công bố lại mã chưa thay đổi.
- **Giải quyết tập lệnh thông minh** — Chạy `publish-to-npm` nếu được định nghĩa trong tập lệnh `package.json`, ngược lại sẽ chuyển sang công bố mặc định `npm publish --access public`.
- **Loại trừ công bố** — Bỏ qua các gói được đánh dấu bằng thuộc tính `"private": true` hoặc `"ui-no-publish": true`.

## Khởi tạo

Bạn có thể tạo một phiên bản của `BuildPublishPackages` bằng cách truyền tùy chọn đường dẫn thư mục gói tùy chỉnh.

```typescript
import { BuildPublishPackages } from './BuildPublishPackages'

const publisher = new BuildPublishPackages()
await publisher.make()
```

## Các phương thức

- `make(): Promise<void>` — Khởi tạo quá trình quét và kích hoạt quy trình công bố cho từng gói được phát hiện.
- `isUpdate(packageFile: PackageFile): boolean` — Kiểm tra xem phiên bản hiện tại của gói trong `package.json` có khác với phiên bản được lưu trữ trong tệp nhật ký hay không.
- `getVersionLog(name: string): string` — Lấy phiên bản được lưu trong bộ nhớ đệm của gói từ nhật ký công bố.
- `updateLog(packageFile: PackageFile): void` — Cập nhật bản ghi nhật ký công bố trong bộ nhớ với phiên bản gói hiện tại.
- `saveLog(): void` — Lưu nhật ký công bố từ bộ nhớ tạm vào tệp `./logs/ui-publish.log.json`.
