@holix/builder
v0.3.0
Published
Builder utilities for the Holix framework
Maintainers
Readme
@holix/builder
Holix 构建工具,基于 Rolldown 提供高性能的构建能力。
功能特性
🎯 多入口分目录输出
自动根据配置将不同的入口文件输出到不同的子目录:
- 主入口 (
app.entry) →dist/main/ - 预加载脚本 (
preload) →dist/preload/
📦 配置示例
// holix.config.ts
import { defineHolixConfig } from '@holix/cli/config'
export default defineHolixConfig({
app: {
entry: 'src/main.ts', // 主入口
},
preload: {
bridge: 'src/bridge.ts', // 预加载脚本
worker: 'src/worker.ts',
},
outDir: 'dist',
})📂 输出结构
构建后会生成以下目录结构:
dist/
├── main/
│ └── main.js # 主入口输出
├── preload/
│ ├── bridge.js # 预加载脚本
│ └── worker.js
└── _chunks/
└── shared-*.js # 共享代码块API
createBuildConfig(holixConfig, packageJson)
根据 HolixConfig 创建 Rolldown 构建配置。
参数:
holixConfig: HolixConfig - Holix 配置对象packageJson: PackageJson - package.json 内容
返回: BuildOptions - Rolldown 构建配置
resolveEntries(holixConfig)
从 HolixConfig 解析所有入口文件配置。
参数:
holixConfig: HolixConfig - Holix 配置对象
返回: EntryOutputConfig[] - 入口文件配置数组
示例:
import { resolveEntries } from '@holix/builder'
const entries = resolveEntries({
app: { entry: 'src/main.ts' },
preload: {
bridge: 'src/bridge.ts',
worker: 'src/worker.ts',
},
})
// 返回:
// [
// { path: '/project/src/main.ts', subDir: 'main', name: 'main' },
// { path: '/project/src/bridge.ts', subDir: 'preload', name: 'bridge' },
// { path: '/project/src/worker.ts', subDir: 'preload', name: 'worker' }
// ]Preload 配置格式
支持三种格式:
1. 字符串 (单个文件)
{
preload: 'src/preload.ts'
}
// 输出: dist/preload/preload.js2. 数组 (多个文件)
{
preload: ['src/preload1.ts', 'src/preload2.ts']
}
// 输出:
// - dist/preload/preload-0.js
// - dist/preload/preload-1.js3. 对象 (命名文件)
{
preload: {
bridge: 'src/bridge.ts',
worker: 'src/worker.ts'
}
}
// 输出:
// - dist/preload/bridge.js
// - dist/preload/worker.js插件
External 插件
自动外部化依赖:
externalNode()- 外部化 Node.js 内置模块externalDeps()- 外部化 package.json 中的依赖externalElectron()- 外部化 Electron 模块
使用示例
import { externalDeps, externalNode } from '@holix/builder'
{
plugins: [
externalNode(),
externalDeps({
strategy: 'production', // 'all' | 'production' | 'none'
packageJson
})
]
}工具函数
JSX 配置
import { getJsxConfigFromPackageJson } from '@holix/builder'
const jsxConfig = getJsxConfigFromPackageJson(packageJson)
// 自动从 package.json 推断 React/Vue 配置模块类型解析
import { resolvePackageModuleType } from '@holix/builder'
const format = resolvePackageModuleType(packageJson)
// 返回: 'esm' | 'cjs'License
MIT
