美文网首页
webpack5 使用babel

webpack5 使用babel

作者: 申_9a33 | 来源:发表于2021-03-18 11:54 被阅读0次

    webpack5 使用babel

    1.克隆一份webpack5创建前端代码

    2.安装babel 和 ts 包

    npm install --save-dev typescript @babel/core @babel/cli @babel/plugin-proposal-class-properties @babel/preset-env @babel/preset-typescript
    

    3.创建一个新的ts配置文件 tsconfig.json

    tsc --init --declaration --allowSyntheticDefaultImports --target esnext --outDir lib
    

    4.创建babel配置文件 .babelrc

    {
        "presets": [
            [
                "@babel/preset-env",
                {
                    "targets": {
                        "edge": "17",
                        "firefox": "60",
                        "chrome": "67",
                        "safari": "11.1",
                        "ie": "8"
                    }
                }
            ],
            "@babel/preset-typescript"
        ],
        "plugins": [
            "@babel/plugin-proposal-class-properties"
        ]
    }
    

    5.去掉webpack.common.js的js处理

          // {
          //   test: /\.tsx?$/,
          //   use: 'ts-loader',
          //   exclude: /node_modules/,
          // },
    

    6.增加调试环境对ts的处理 webpack.dev.js

                {
                    test: /\.tsx?$/,
                    use: 'ts-loader',
                    exclude: /node_modules/,
                },
    

    7.增加生产环境对ts的处理 webpack.prod.js

                {
                    test: /\.(ts|js)x?$/,
                    exclude: /node_modules/,
                    loader: 'babel-loader',
                },
    

    8.修改main.ts,增加一些es6的写法

    // Promise调用
    add(1, 2)
      .then((res) => {
        console.log(res, 'add');
      });
    
      const defaults = {
        fontSize: '10px',
      }
    
    // 扩展运算符
      const styles = {
        ...defaults,
        color: "#f5da55",
      };
    
      console.log(styles);
      
    // 模板字符串
      const textDom = document.querySelector("#text");
      textDom?.setAttribute('style',`color:${styles.color}; font-size:${styles.fontSize}`);
    
    • 此时在google浏览器调试环境和生产环境都可以正常打印和展示;
    • 在ie中,测试环境,生产环境都会报错,生产环境错误提示为: Promise未定义

    使用core-js实现全部 polyfill

    9. 安装core-js

    npm i core-js -D

    10.修改.babelrc 引入 core-js

    {
        "presets": [
            [
                "@babel/preset-env",
                {
                    "useBuiltIns": "usage",
                    "corejs": {
                        //core-js的版本
                        "version": 3
                    },
                    "targets": {
                        "edge": "17",
                        "firefox": "60",
                        "chrome": "67",
                        "safari": "11.1",
                        "ie": "8"
                    }
                }
            ],
            "@babel/preset-typescript"
        ],
        "plugins": [
            "@babel/plugin-proposal-class-properties"
        ]
    }
    
    • 此时在ie中生产环境能正常打印,有些样式显示不对不在本次处理;
    • 调试环境没有使用babel,所以会报 语法错误

    源码

    相关文章

      网友评论

          本文标题:webpack5 使用babel

          本文链接:https://www.haomeiwen.com/subject/bhcecltx.html