AngularJS框架升级babel7攻略

673 阅读2分钟

前言

项目是由AngularJS1.5 + webpack4 + babel6搭建的,现准备升级babel至babel7

开始升级

1、全局安装babel-upgrade,方便其他项目升级babel(已经安装过的可以省略该步骤)

npm install babel-upgrade -g

2、使用以下命令检查需要升级的文件和相关插件(package.json、.babelrc)

npx babel-upgrade

下图为该命令展示的两个文件修改的内容对比,我们能大体知道将要更新的插件有哪些,做到心中有数。 3、上述命令只是展示了将要更新的内容,但没有真实的修改文件,现我们执行以下命令修改2个文件

npx babel-upgrade --write

查看修改结果: 通过命令升级并没有很完善的修改.babelrc文件,我们可以根据自身需要手动修改相关内容,满足项目需求

4、通过babel-upgrade 命令修改了相关文件,但并没有安装这些插件,我们需要执行以下命令安装这些插件

npm install  或者 yarn

5、构建本地环境,发现报以下错误 解决方案是,卸载 ng-annotate-loader, 安装 babel-plugin-angularjs-annotate

npm uninstall ng-annotate-loader -D
npm install babel-plugin-angularjs-annotate -D

修改.babelrc文件和webpack.json文件

(1) .babelrc文件

{
    "presets": [
        "@babel/preset-env"
    ],
    "plugins": [
        "angularjs-annotate",
        [
            "@babel/plugin-transform-runtime",
            {
                "corejs": 2
            }
        ]
    ]
}

(2)webpack.json文件

···
        {
            test: /(\.es6|\.js)$/,
            exclude: /(node_modules|bower_components\.js)/,
            use: [
                {
                    loader: 'babel-loader',
                    options: {
                        presets: ['@babel/preset-env']
                    }
                }
            ]
        },
···

6、继续执行本地构建,发现已经构建成功了,运行本地环境,检查页面是否能正常显示,,发现报以下错误 导致这个错误的原因是在项目中混淆使用import和module.exports,babel7提供了相关插件进行统一转换,该插件将ECMAScript模块转换为CommonJS。

npm install --save-dev @babel/plugin-transform-modules-commonjs

.babelrc

{
    "presets": [
        "@babel/preset-env"
    ],
    "plugins": [
        "angularjs-annotate",
        [
            "@babel/plugin-transform-modules-commonjs",
            {
                "allowTopLevelThis": true
            }
        ],
        [
            "@babel/plugin-transform-runtime",
            {
                "corejs": 2
            }
        ]
    ]
}

再次构建运行本地环境已能正常运行了。

总结:

bable升级过程中,总会遇到各式各样的问题,这时候我们需要充分发挥我们的搜索能力,逐个解决相关错误。

参考文档:

babel 官网

github bable升级

github babel issues