汇总 TypeScript 配置生成不完整的 JavaScript 包
Rollup TypeScript Configuration Produces Incomplete JavaScript Bundle
我正在使用 Rollup 和 TypeScript 构建一个 React 组件库,我想捆绑这些组件,以便我团队中的其他人可以在他们的应用程序中使用它们。问题是我的包输出缺少导出,所以我的配置显然有缺陷。
汇总配置:
export default {
input: ['src/Button.tsx'],
output: {
dir: 'build',
format: 'esm',
sourcemap: true,
exports: 'named'
},
plugins: [
typescript({
declarationDir: 'build',
jsx: 'react'
}),
sourceMaps()
]
};
TypeScript 配置:
{
"include": [
"src",
"types"
],
"compilerOptions": {
"module": "esnext",
"lib": [
"dom",
"esnext"
],
"importHelpers": true,
"declaration": true,
"sourceMap": true,
"rootDir": "./src",
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"moduleResolution": "node",
"baseUrl": "./",
"paths": {
"@": [
"./"
],
"*": [
"src/*",
"node_modules/*"
]
},
"jsx": "react",
"esModuleInterop": true
}
}
最后 Button.tsx
:
export enum ButtonSize {
...
}
export enum ButtonType {
...
}
const someVar = ...
interface ButtonProps {
...
}
interface ButtonStyle {
...
}
const buttonStyle: ButtonStyle = {
...
}
const Button: React.FC<ButtonProps> = (p: ButtonProps) => {
...
}
export default Button
最终的 JavaScript 捆绑包只有 someVar
的所有内容。 以下 someVar
的所有内容都丢失了。
我的配置和代码在 JavaScript 输出中留下这些空白的原因是什么?
原来答案是消除所有export default
。简单地导出为命名导出解决了这个问题。
原因?
"Note: default exports cannot be combined and exported by this plugin. Only named exports will be exported."
@rollup/plugin-multi-entry
的细则中
我正在使用 Rollup 和 TypeScript 构建一个 React 组件库,我想捆绑这些组件,以便我团队中的其他人可以在他们的应用程序中使用它们。问题是我的包输出缺少导出,所以我的配置显然有缺陷。
汇总配置:
export default {
input: ['src/Button.tsx'],
output: {
dir: 'build',
format: 'esm',
sourcemap: true,
exports: 'named'
},
plugins: [
typescript({
declarationDir: 'build',
jsx: 'react'
}),
sourceMaps()
]
};
TypeScript 配置:
{
"include": [
"src",
"types"
],
"compilerOptions": {
"module": "esnext",
"lib": [
"dom",
"esnext"
],
"importHelpers": true,
"declaration": true,
"sourceMap": true,
"rootDir": "./src",
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"moduleResolution": "node",
"baseUrl": "./",
"paths": {
"@": [
"./"
],
"*": [
"src/*",
"node_modules/*"
]
},
"jsx": "react",
"esModuleInterop": true
}
}
最后 Button.tsx
:
export enum ButtonSize {
...
}
export enum ButtonType {
...
}
const someVar = ...
interface ButtonProps {
...
}
interface ButtonStyle {
...
}
const buttonStyle: ButtonStyle = {
...
}
const Button: React.FC<ButtonProps> = (p: ButtonProps) => {
...
}
export default Button
最终的 JavaScript 捆绑包只有 someVar
的所有内容。 以下 someVar
的所有内容都丢失了。
我的配置和代码在 JavaScript 输出中留下这些空白的原因是什么?
原来答案是消除所有export default
。简单地导出为命名导出解决了这个问题。
原因?
"Note: default exports cannot be combined and exported by this plugin. Only named exports will be exported."
@rollup/plugin-multi-entry