babel中preset-react和react的区别

Boj*_*jan 5 npm reactjs babeljs

我正在从头开始创建一个 React 项目,没有 create-react-app。但它在我的 mac 上运行良好,但在我的其他 ubuntu 笔记本电脑上运行不佳。以下是我之前的 .babelrc 文件内容。

"presets": [
    "@babel/preset-react",
    "@babel/preset-env"
]
Run Code Online (Sandbox Code Playgroud)

它在我的 mac(npm 版本 6.12.0)上运行良好,但在 ubuntu(npm 版本 6.14.5)上运行良好,它显示错误,无法编译 src/index.js -> 下面的行

ReactDOM.render(<App />, document.getElementById('root'));
Run Code Online (Sandbox Code Playgroud)

所以我将 .babelrc env 文件更改为

"presets": [
    "@babel/react",
    "@babel/env"
]
Run Code Online (Sandbox Code Playgroud)

最终它对两者都起作用。但我不确定 @babel/preset-react 和 @babel/react 之间的确切区别。如果有人知道这两者之间的确切区别,请告诉我。感谢您的帮助!

bgo*_*man 1

https://babeljs.io/docs/en/v7-migration#package-renames

{
-  "presets": ["@babel/preset-react"],
+  "presets": ["@babel/react"], // this is equivalent
-  "plugins": ["@babel/transform-runtime"],
+  "plugins": ["@babel/plugin-transform-runtime"], // same
}
Run Code Online (Sandbox Code Playgroud)