汇总-重新导出通配符不适用于默认值

时间:2019-08-04 15:55:58

标签: typescript rollup

我有一个文件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 }),
    ]
  }
]

编辑:example on the REPL

1 个答案:

答案 0 :(得分:0)

这实际上是语言设计的一部分-export * from 'x'语法应该导出除default之外的所有内容。

如果您检出GetExportedNames operation in the language standard,则可以在StarExportEntries部分中看到避免使用default条目的特殊逻辑。