-
Notifications
You must be signed in to change notification settings - Fork 75
Open
Description
现状
目前 @ice/pkg 中,配置主要通过 transform
和 bundle
两个大类的构建来实现,又通过其内部的 formats
来区分不同的构建目标。
但随着社区的发展,和构建目标越来越多样,已经难以满足目前的构建需求。
- 无法方便的为不同的 formats 定制不同的输出目录和插件体系
- formats 绑定死了 module 和 target 形式,开发者无法灵活的独立配置
- 无法方便的同时构建多个不同类型产物和目标,例如 mf、web、node
因此这里特地提出一种全新的构建体系配置,能够做到更加灵活的和简便的构建配置体系。
配置
为了不引入 Break Change,在新的配置体系下,所有的配置将放到新的 pkgs
配置目录下。
export default defineConfig({
pkgs: [] // new keys
transform: {}, // 依旧保持兼容可以继续使用,但与 pkgs 的配置完全独立
bundle: {},
})
配置类型
预设字符串
例如可以直接通过 transform:esm
bundle:umd
等直接使用和原先类似的预设方案
export default defineConfig({
pkgs: ['transform:esm', 'transform:es2017', 'bundle:umd']
})
对象配置
可以传入一个对象进行配置,在传入对象的情况下,需要单独配置模块类型和语法目标。
export default defineConfig({
pkgs: [{
id: 'xxx', // 唯一标识某个构建,方便后续操作
module: 'esm',
target: '2017',
bundle: false, // 默认就是 transform
outDir: '/xxx', // 单独配置输出目录
plugins: [], // 配置独立的插件
pkgs: [{}, { entry: 'xxx' }], // 继承这个配置,通过创建出两个子配置来
}, {
module: 'umd',
target: 'es5',
bundle: true, // 启动 bundle 构建
}, {
preset: 'bundle:umd', // 基于默认配置进行修改
}]
})
可以通过嵌套 pkgs 来实现继承和扩展,只有没有配置 pkgs 的配置会作为最终的构建目标,如果配置了 pkgs,则作为普通的配置项目用以继承。
Metadata
Metadata
Assignees
Labels
No labels