包导出生成
robuild 可以自动生成 package.json 的 exports 字段,简化包发布配置。
启用导出生成
CLI
sh
robuild --generate-exports ./src/index.ts1
配置文件
build.config.ts
ts
import { defineConfig } from 'robuild'
export default defineConfig({
exports: {
enabled: true,
autoUpdate: true,
},
entries: [
{
type: 'bundle',
input: './src/index.ts',
format: ['esm', 'cjs'],
dts: true,
generateExports: true,
},
],
})1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
生成结果
构建后会在 package.json 中生成:
package.json
json
{
"exports": {
".": {
"types": "./dist/index.d.mts",
"import": "./dist/index.mjs",
"require": "./dist/index.cjs"
}
}
}1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
配置选项
build.config.ts
ts
import { defineConfig } from 'robuild'
export default defineConfig({
exports: {
enabled: true, // 启用导出生成
autoUpdate: true, // 自动更新 package.json
includeTypes: true, // 包含类型定义
},
entries: [
{
type: 'bundle',
input: './src/index.ts',
generateExports: true,
},
],
})1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
自定义导出路径
使用 exportPath 指定导出路径:
build.config.ts
ts
import { defineConfig } from 'robuild'
export default defineConfig({
exports: { enabled: true, autoUpdate: true },
entries: [
{
type: 'bundle',
input: './src/utils/index.ts',
generateExports: true,
exportPath: './utils', // 导出为 "package-name/utils"
},
],
})1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
生成:
package.json
json
{
"exports": {
"./utils": {
"types": "./dist/utils/index.d.mts",
"import": "./dist/utils/index.mjs"
}
}
}1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
多入口导出
build.config.ts
ts
import { defineConfig } from 'robuild'
export default defineConfig({
exports: { enabled: true, autoUpdate: true },
entries: [
{
type: 'bundle',
input: './src/index.ts',
generateExports: true,
exportPath: '.',
},
{
type: 'bundle',
input: './src/cli.ts',
generateExports: true,
exportPath: './cli',
},
],
})1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
TIP
使用自动导出生成可以确保 exports 字段始终与实际构建产物保持同步,减少发布错误。
