Giao diện
@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 clientPlugin generation
| Hàm | Mô 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?
| Consumer | Mục đích |
|---|---|
Development server (bun dev) | Alias resolution, plugin index generation |
Build scripts (digiforce-build) | Package discovery, build ordering |
| Plugin scaffold | Template generation |
Dependencies
| Package | Vai trò |
|---|---|
@digiforce-nc/build | Build infrastructure |
@digiforce-nc/client | Client package metadata |
@digiforce-nc/test | Test configuration sharing |