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