Hem*_*ari 7 babel reactjs babeljs babel-loader webpack-4
我尝试将Webpack和babel分别升级到4、7,但是无法正常工作。另外,官方文档对升级没有太大帮助
我正在关注问题
编译器错误:找不到模块'@ babel / core'@多主体时出错
我正在使用的依赖项:
"babel-core": "^6.26.3",
"babel-eslint": "^9.0.0",
"babel-loader": "^8.0.0",
"babel-plugin-transform-class-properties": "^6.24.1",
"babel-plugin-transform-object-rest-spread": "^6.26.0",
"babel-polyfill": "^6.26.0",
"babel-preset-env": "^1.7.0",
"babel-preset-react": "^6.24.1",
"webpack": "^4.15.0",
"webpack-cli": "^3.0.8",
"webpack-dev-server": "^3.1.4"
Run Code Online (Sandbox Code Playgroud)
如果需要更多详细信息,请告诉我。
Pri*_*kar 19
使用babel升级
在node@10.15.3,npm@6.4.1和babel@7.4.0上测试
您可以使用以下脚本。(仅在节点5+上为npx)
npx babel-upgrade --write
Run Code Online (Sandbox Code Playgroud)
--write标志将更新写入package.json和.babelrc。
您最终将对package.json进行以下修改:
"devDependencies": {
"@babel/core": "^7.4.0",
"@babel/plugin-proposal-class-properties": "^7.0.0",
"@babel/plugin-proposal-json-strings": "^7.0.0",
"@babel/plugin-proposal-private-methods": "^7.4.0",
"@babel/plugin-syntax-dynamic-import": "^7.0.0",
"@babel/plugin-syntax-import-meta": "^7.0.0"
}
Run Code Online (Sandbox Code Playgroud)
.babelrc
{
"plugins": [
"@babel/plugin-syntax-dynamic-import",
"@babel/plugin-syntax-import-meta",
[
"@babel/plugin-proposal-class-properties"
],
"@babel/plugin-proposal-json-strings",
[
"@babel/plugin-proposal-private-methods"
]
]
}
Run Code Online (Sandbox Code Playgroud)
在上述插件中@babel/plugin-proposal-class-properties @babel/plugin-proposal-private-methods,如果选择实现它们,则需要使私有属性正确运行。
如果您使用的是eslint,请不要忘记在.eslintrc文件中将解析器设置为babel-eslint:
{
"parser": "babel-eslint"
}
Run Code Online (Sandbox Code Playgroud)
Babel将模块的名称更改babel-core为@ babel / core。快跑npm install @babel/core。这将安装最新版本的Babel core。
Babel中的大多数软件包都已按照该模式进行了重命名@babel/PACKAGE_NAME。因此,如果要升级,请更改软件包名称以遵循模式并运行npm install。
要升级到Babel 7,可以使用此迁移指南。
您可以使用 babel-upgrade 进行平滑升级。
https://github.com/babel/babel-upgrade
之后您可能需要npm prune在 node_modules 中丢弃过时的包。
编辑:
当我尝试 babel-upgrade 时,babel 和 webpack 配置没有被修改。所以我不得不手动更改它。这是示例。
.babelrc
"presets": ["@babel/env", "@babel/react"]
Run Code Online (Sandbox Code Playgroud)
网络包配置
loader: 'babel-loader',
options: { presets: ['@babel/env', '@babel/react']}
Run Code Online (Sandbox Code Playgroud)