Bỏ qua, đến nội dung

@digiforce-nc/devtools ​

Package@digiforce-nc/devtools
Vai tròDevelopment utilities cho monorepo Digiforce - plugin discovery, index generation, build config

Tổng quan ​

@digiforce-nc/devtools cung cấp các tiện ích phục vụ quá trình phát triển: tự động phát hiện plugin, generate file index cho client build, và chia sẻ cấu hình RSBuild giữa các package.

API ​

getPackagePaths() ​

Quét monorepo và trả về danh sách đường dẫn tất cả package:

ts
import { getPackagePaths } from '@digiforce-nc/devtools';

const paths = getPackagePaths();
// [
//   'packages/core/server',
//   'packages/core/database',
//   'packages/plugins/users',
//   ...
// ]

Hàm này dùng workspace config (từ package.json root) để xác định vị trí package.

IndexGenerator ​

Class generate file index cho client build - tự động tạo file import tất cả plugin đã đăng ký:

ts
import { IndexGenerator } from '@digiforce-nc/devtools';

const generator = new IndexGenerator();
await generator.generate();
// → Tạo file index.ts với import cho mỗi plugin client

Plugin generation ​

HàmMô tả
generatePlugins()Generate danh sách plugin v1 cho client bundle
generateV2Plugins()Generate danh sách plugin v2 (lazy-load)
generateAllPlugins()Generate tất cả plugin (v1 + v2)

Các hàm này tạo file TypeScript chứa mảng plugin registration, được client app import để biết plugin nào cần load.

ts
// Output mẫu từ generatePlugins()
export default [
  { name: 'users', packageName: '@digiforce-nc/plugin-users' },
  { name: 'acl', packageName: '@digiforce-nc/plugin-acl' },
  { name: 'workflow', packageName: '@digiforce-nc/plugin-workflow' },
];

getRsbuildAlias() ​

Trả về alias map cho RSBuild, cho phép development server resolve module từ source code thay vì build output:

ts
import { getRsbuildAlias } from '@digiforce-nc/devtools';

const alias = getRsbuildAlias();
// {
//   '@digiforce-nc/client': '/path/to/packages/core/client/src',
//   '@digiforce-nc/sdk': '/path/to/packages/core/sdk/src',
//   ...
// }

Nhờ alias, khi dev không cần rebuild package dependency mỗi khi sửa code - RSBuild resolve trực tiếp từ src/.

rsbuildConfig ​

Cấu hình RSBuild chia sẻ giữa các package trong monorepo:

ts
import { rsbuildConfig } from '@digiforce-nc/devtools';

// Dùng làm base config cho RSBuild
export default {
  ...rsbuildConfig,
  source: {
    entry: { index: './src/client/index.tsx' },
  },
};

Config bao gồm: alias, loader rules, plugin defaults, và các optimization chung.

Ai sử dụng? ​

ConsumerMục đích
Development server (bun dev)Alias resolution, plugin index generation
Build scripts (digiforce-build)Package discovery, build ordering
Plugin scaffoldTemplate generation

Dependencies ​

PackageVai trò
@digiforce-nc/buildBuild infrastructure
@digiforce-nc/clientClient package metadata
@digiforce-nc/testTest configuration sharing