developit / developit/microbundle
react-jsx does not work with Preact
- 主要语言
- JavaScript
- 星标
- 8.1k
- 派生
- 358
- PR 合并指标
- 30 天内没有已合并 PR
描述
Hi
## Error
I've recently made the switch to microbundle for a project that uses Preact and TypeScript.
Following the docs, and me having the latest version of TypeScript, I put the following in my tsconfig:
```json
{
"compilerOptions": {
"jsx": "react-jsx",
"jsxImportSource": "preact",
//...
}
}
```
However when building with microbundle I get the following error:
`rpt2: options error TS5089: Option 'jsxFactory' cannot be specified when option 'jsx' is 'react-jsx'.`
This seems weird behaviour as I have not specified the jsxFactory.
Combined with this I also get an error about the 'jsxFragmentFactory' having to be provided to use JSX Fragments, but I presume that is due to the fact the the jsxFactory is somehow incorrect.
I tried hardcoding the values from the config in my script (without success) by doing the following
`microbundle --jsx react-jsx --jsxImportSource preact`
## Possible solution
I've been able to get microbundle working if I switch back to the tsconfig for older versions of TypeScript, so I'll be opting into this behaviour for now. For reference this is what the old config is:
```json
{
"compilerOptions": {
"jsx": "react",
"jsxFactory": "h",
"jsxFragmentFactory": "Fragment",
//...
}
}
```
贡献指南
这个仓库没有索引到贡献指南
调研方向
Start by reproducing the failure with the reported tsconfig options and a microbundle build, then inspect how microbundle passes JSX settings to TypeScript. The issue is done when react-jsx with jsxImportSource set to preact no longer triggers the conflicting jsxFactory or fragment-factory errors.
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- javascript, typescript
- 领域
- build-system, tooling
- Issue 类型
- 缺陷
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 活跃度
- 停滞
- 描述清晰度
- 基本清楚
- 新手友好度
- 35/100