[BABEL+WEBPACK@4] 手动用webpack+babel 打包压缩文件兼容ie

今天要把 bpmn-modeler.development.js 打包压缩成ie可以是识别的代码 es5 bpmn-modeler.min.js

刚开始用的是babel的打包,但是babel打包后不能识别promise

于是就想到了很久没有用到的webpack ,可是webpack已经升级到4了,好多都跟之前的不一样。于是开启疯狂的百度模式,下面把我遇到的问题整理一下,仅供参考,也方便以后使用;

NO1:Note: The code generator has deoptimised the styling of …… as it exceeds the max of "500KB".

解决方法:在.babelrc文件中写入:"compact": false,

{
  "compact": false,
  "presets": [
    [
      "@babel/preset-env",
      {
        "debug": true,
        "useBuiltIns": "usage",
        "targets":{
          "browsers":["> 1%", "last 2 versions", "not ie <= 8"]
        }
      }
    ]
  ],
  "plugins": [
    [
      "@babel/plugin-transform-runtime",
      {
        "corejs": 2
      }
    ]
  ]
}

NO2:WebPack 警告WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).解决

解决方法:在webpack.config.js里面添加如下蓝色部分

 

const path=require('path');
module.exports = {
    // 生产环境
    mode: 'production',
    entry:  {
        ...
    }, // 之前提到的唯一入口文件
    output: {
        ...
    },

    // 指定loader
    module: {
        ...
    },
    performance: {
        hints: "warning", // 枚举
        maxAssetSize: 30000000, // 整数类型(以字节为单位)
        maxEntrypointSize: 50000000, // 整数类型(以字节为单位)
        assetFilter: function (assetFilename) {
            // 提供资源文件名的断言函数
            return assetFilename.endsWith('.css') || assetFilename.endsWith('.js');

        }
    }
}

 

网上有说可以添加

performance: {
 
hints:false   
 
}

本人没有尝试,感兴趣的小伙伴可以试试。

NO3:报错:TypeError:Cannot read property 'bindings' of null

解决方法:重新安装 npm install -D babel-loader @babel/core @babel/preset-env webpack  ;同时修改.babelrc文件和webpack.config.js文件

 

webpack.config.js
const path=require('path');
module.exports = {
    // 生产环境
    mode: 'production',
    entry:  {
        ...
    }, // 之前提到的唯一入口文件
    output: {
        ...
    },

    // 指定loader
    module: {

        // rules中的每一项是一个规则
        rules:[
            {
                test: /\.js$/, // 值一个正则,符合这些正则的资源会用一个loade来处理
                use: {
                    loader: 'babel-loader', // 使用bable-loader来处理
                    options: {  // 指定参数
                        presets: [
                            ['@babel/preset-env', {
                                targets: {
                                    browsers: ['> 1%', 'last 2 version'] //具体可以去babel-preset里面查看
                                }
                            }]

                        ] // 指定哪些语法编译
                    }
                },
                exclude: '/node_module/' // 排除在外
            }
        ]
    },
    performance: {
        ...
    }
}

 

.babelrc文件
{
  "compact": false,
  "presets": [
    [
      "@babel/preset-env",
      {
        "debug": true,
        "useBuiltIns": "usage",
        "targets":{
          "browsers":["> 1%", "last 2 versions", "not ie <= 8"]
        }
      }
    ]
  ],
  "plugins": [
    ...
  ]
}

注意:这两个文件此处的名字要一致。

NO4:Requires Babel "^7.0.0-0", but was loaded with "6.26.3".

npm install --save-dev babel-jest babel-core@^7.0.0-bridge.0 @babel/core regenerator-runtime

NO5:创建webpack打包 以及安装依赖

npm init -y

"devDependencies": {
    "@babel/cli": "^7.10.1",
    "@babel/core": "^7.10.2",
    "@babel/plugin-transform-runtime": "^7.10.1",
    "@babel/preset-env": "^7.10.2",
    "babel-loader": "^8.1.0",
    "babel-preset-env": "^1.7.0",
    "url-loader": "^4.1.0",
    "webpack": "^4.43.0",
    "webpack-cli": "^3.3.11"
  },
  "dependencies": {
    "@babel/polyfill": "^7.10.1",
    "@babel/runtime": "^7.10.2",
    "@babel/runtime-corejs2": "^7.10.2",
    "babel-core": "^7.0.0-bridge.0",
    "babel-jest": "^26.0.1",
    "regenerator-runtime": "^0.13.5"
  }

 

参考文献:https://segmentfault.com/a/1190000017175671

 

posted @ 2020-06-12 21:03  精灵铭心  阅读(1034)  评论(0编辑  收藏  举报