icepkg
icepkg copied to clipboard
[ice-pkg 插件开发] modifyUserConfig 不符合预期
通过 modifyUserConfig 修改 用户配置 ,和直接配置后的 构建产物不同。
方式一 直接配置:
// build.config.mts
import { defineConfig } from "@ice/pkg";
// https://pkg.ice.work/reference/config/
export default defineConfig({
transform: {
formats: ["es2017"],
},
bundle: {
polyfill: false,
formats: ["es2017"],
},
});
方式二 通过插件修改配置:
// build.config.mts
import { defineConfig } from "@ice/pkg";
// https://pkg.ice.work/reference/config/
export default defineConfig({
plugins: ["./plugin.mjs"],
});
// ./plugin.mjs
/**
* @type {import('@ice/pkg').Plugin}
*/
const plugin = (api, options) => {
const { modifyUserConfig } = api;
modifyUserConfig("transform", {
formats: ["es2017"],
});
modifyUserConfig("bundle", {
polyfill: false,
formats: ["es2017"],
});
};
export default plugin;
方式一和方式二 构建产物不同,方式二 多构建了 esm 目录产物
https://github.com/ice-lab/icepkg/blob/de7f2959a2e3925d6ee4a90bce9ed12ae43f2b4f/packages/pkg/src/plugins/component.ts#L18
目前的逻辑是,一个 transform.format 对应一个 task。
上面是内置插件会在最前面运行,注册 task 的逻辑先执行,并且依赖 transform.formats。自定义插件通过 modifyUserConfig 没办法修改已注册的 task
我认为这个后面要重构掉,具体的方案要讨论下。