@agent-anvil-platform/build-tools
v0.7.2
Published
agent-anvil Platform 插件前端构建期工具集:vite 插件、plugin.yaml 校验(ajv)、产物契约检查
Maintainers
Readme
@agent-anvil-platform/build-tools
agent-anvil Platform 插件前端的构建期工具集(仅 devDependency,不进入运行期产物)。
安装
npm i -D @agent-anvil-platform/build-tools仓库内开发无需安装:本包是 agent-anvil-frontend 的 npm workspace 成员,
npm install 后 node_modules/@agent-anvil-platform/build-tools 会软链到 packages/build-tools 源码目录。
⚠️ CI 顺序约束:8 个插件前端以
"@agent-anvil-platform/build-tools": "^2.0.0"声明依赖。 在仓库外独立构建插件时,必须先把本包发布到 registry,否则npm install无法解析。
导出内容
| 导出 | 用途 |
|---|---|
| createPluginViteConfig() | 插件前端多入口打包配置工厂,统一 external / 产物命名 / 目录约定 |
| extractMetadata() | vite 插件,构建期扫描组件并产出 v2 前端元数据 |
| collectComponentEntries() / collectDomainComponentEntries() | 组件入口扫描纯函数(单域 / 多域) |
| aggregateFrontendMeta() | 元数据聚合纯函数 |
| validateFrontendMeta() / assertValidFrontendMeta() | 基于 ajv 的 schema 校验 |
| extractFileMeta() / collectExportedNames() 等 | 抽取器纯函数,供单测与脚本复用 |
| 类型 | FrontendMetaV2、ComponentMetaV2、PluginDomainSource、PropMeta 等 |
典型用法(单域插件前端 vite.config.ts):
import { createPluginViteConfig } from '@agent-anvil-platform/build-tools';
export default createPluginViteConfig({ pluginName: 'user-mgmt' });多域用法(system-suite 套件前端,v2.1 新增):
import { createPluginViteConfig } from '@agent-anvil-platform/build-tools';
export default createPluginViteConfig({
pluginName: 'system-suite',
domains: [
{ name: 'user-mgmt' },
{ name: 'file-mgmt' },
{ name: 'dict-mgmt' },
// …
],
});- 组件源目录:
src/domains/<域名>/<componentDir>/*.tsx(支持src/domains/<域>/component/Xxx/index.tsx目录布局); - 产物仍扁平输出:
dist/component/{Name}.js(ComponentMetaV2.module契约不变); - 跨域组件重名会在构建期显式报错(产物扁平契约要求组件名全局唯一);
- 不传
domains时行为与 v2.0 完全一致(只扫src/<componentDir>/),存量 8 个插件零改动。
构建
npm run build # tsc 编译 + copy-assets 搬运 src/schema/*.json 到 dist/schema/
npm run typecheck # 仅类型检查
npm test # 回到仓库根跑 jest packages/build-tools
validate在运行期按文件路径读取dist/schema/*.json(单一事实源), 因此本包不声明exports字段,避免限制子路径访问导致 schema 解析失败。
发布
npm version <patch|minor|major>
npm publish # prepublishOnly 自动执行 build;registry 取 publishConfig