【发布时间】:2023-01-31 19:11:50
【问题描述】:
我在我的 tsconfig 文件中使用 "jsx": "react-jsx", 并使用 Vite/rollup 进行捆绑。出于某种原因,我的模块总是与 react-jsx-runtime.production.min.js 和 react-jsx-runtime.development.js 捆绑在一起,即使 NODE_ENV 设置为生产。我只希望包含生产代码。
我可以通过在汇总选项中将 'react/jsx-runtime' 设置为外部来删除两者,但这也不是我想要的产品包。我找不到解释这一点的文档。有谁知道如何阻止捆绑器包含开发运行时?
vite.config.ts
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
export default defineConfig({
build: {
lib: {
entry: './src/index.tsx',
formats: ['es'],
name: `button`,
fileName: `button`,
},
rollupOptions: {
external: ['react'],
},
},
plugins: [react()],
})
tsconfig.json文件
{
"compilerOptions": {
"target": "ESNext",
"useDefineForClassFields": true,
"lib": ["DOM", "DOM.Iterable", "ESNext"],
"allowJs": false,
"skipLibCheck": true,
"esModuleInterop": false,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"module": "ESNext",
"moduleResolution": "Node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx"
},
"include": ["src"],
"references": [{ "path": "./tsconfig.node.json" }]
}
tsconfig.node.json文件
{
"compilerOptions": {
"composite": true,
"module": "ESNext",
"moduleResolution": "Node",
"allowSyntheticDefaultImports": true
},
"include": ["vite.config.ts"]
}
包.json
{
"name": "button",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"build": "cross-env NODE_ENV=production vite build && npx tsc"
},
"dependencies": {
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-is": "^18.2.0"
},
"devDependencies": {
"cross-env": "^7.0.3",
"@types/react": "^18.0.26",
"@types/react-dom": "^18.0.9",
"@vitejs/plugin-react": "^3.0.0",
"typescript": "^4.9.3",
"vite": "^4.0.0"
}
}
源代码/index.tsx
import React, { FC } from 'react'
export const Button: FC<any> = ({
children
}) => (
<button>{children}</button>
)
export default Button
【问题讨论】:
标签: reactjs typescript vite rollup