使用rollup打包的时候,子包不打包依赖
external: (id) => {
// 排除以下模块
const externals = [
"react",
"react-dom",
"react/jsx-runtime",
"@forge/core",
"@forge/utils",
"@forge/base",
];
// 精确匹配或以这些模块开头的导入
return externals.some((ext) => id === ext || id.startsWith(ext + "/"));
},父包直接将子包代码打进来,防止查找子包依赖时被路由到了子包的node_modules
resolve({
exportConditions: ['default', 'node', 'module', 'require'],
// extensions: [...extensions, '.json'],
preferBuiltins: true,
resolveOnly: module => {
if (!module) {
return false;
}
const modulePath = import.meta.resolve(module)
if(/^node_modules/.test(modulePath)) {
return true
}
if(modulePath.startsWith('file://' + path.resolve(import.meta.dirname, '../../../tools'))) { // 这里把子包打包进来
return true
}
return false;
},
dedupe: ['ink', 'react/jsx-runtime', 'react', 'zod'],// 打包过程中强制使用父包的node_modules
}),
