我有一个文件src/Button/Button.tsx
:
export default function Button(){}
export interface ButtonProps {}
我正在将所有导出重新导出到文件src/Button/index.ts
中:
export * from './Button'; //i.e src/Button/Button.tsx
在我的入口文件中,我将重新导出包括该特定组件在内的所有内容:
export { ButtonProps, default as Button } from './Button'; //i.e src/Button/index.ts
但是,当使用汇总运行UMD构建时,在上一行出现错误:
src/index.ts → dist/comp-framework.js...
[!] Error: 'default' is not exported by src\Button\index.ts
https://rollupjs.org/guide/en/#error-name-is-not-exported-by-module-
src\index.ts (1:22)
1: export { ButtonProps, default as Button } from './Button';
Error: 'default' is not exported by src\Button\index.ts
这很奇怪,因为仅运行tsc
绝对可以。所以必须是汇总或打字稿插件的问题。我的汇总配置(我删除了TS以外的所有其他插件来缩小问题的范围):
import typescript from 'rollup-plugin-typescript2';
const input = 'src/index.ts';
const globals = {
react: 'React',
'react-dom': 'ReactDOM',
};
const tsOverrides = {
compilerOptions: {
module: 'es2015',
declaration: false,
}
};
export default [
{
input,
output: {
file: 'dist/comp-framework.js',
format: 'umd',
name: 'CompFramework',
globals
},
external: Object.keys(globals),
plugins: [
typescript({ typescript: require('typescript'), tsconfigOverride: tsOverrides, rollupCommonJSResolveHack: true }),
]
},
{
input,
output: {
file: 'dist/comp-framework.min.js',
format: 'umd',
name: 'CompFramework',
globals
},
external: Object.keys(globals),
plugins: [
typescript({ typescript: require('typescript'), tsconfigOverride: tsOverrides, rollupCommonJSResolveHack: true }),
]
}
]
答案 0 :(得分:0)
这实际上是语言设计的一部分-export * from 'x'
语法应该导出除default
之外的所有内容。
如果您检出GetExportedNames operation in the language standard,则可以在StarExportEntries部分中看到避免使用default
条目的特殊逻辑。