js兼容性处理 :babel-loader @babel/preset-env @babel/core @babel/polyfill core-js

    1. 基本js兼容性处理 —> @babel/preset-env

      1. 问题:只能转换基本语法,如promise
    2. 全部js兼容性处理 —> @babel/polyfill

      1. 注意:需在index.js添加import '@babel/polyfill'<br /> 问题:我只要解决部分兼容性问题,但是将所有兼容性代码全部引入,体积太大
    3. 需要做兼容性处理的就做:按需加载 —> core-js ```javascript const { resolve } = require(‘path’) const HtmlWebpackPlugin = require(“html-webpack-plugin”);

    module.exports = { entry: ‘./src/js/index.js’, output: { filename: ‘js/built.js’, path: resolve(__dirname, ‘build’) }, module: { rules: [ /**

    1. * js兼容性处理 babel-loader @babel/preset-env @babel/core
    2. * 1.基本js兼容性处理 --> @babel/preset-env
    3. * 问题:只能转换基本语法,如promise
    4. * 2.全部js兼容性处理 --> @babel/polyfill
    5. * 问题:我只要解决部分兼容性问题,但是将所有兼容性代码全部引入,体积太大
    6. * 3.需要做兼容性处理的就做:按需加载 --> core-js
    7. */
    8. {
    9. test:/\.js$/,
    10. exclude:/node_modules/,
    11. loader:'babel-loader',
    12. options:{
    13. //预设:指示babel做怎么样的兼容性处理
    14. presets:[
    15. [
    16. '@babel/preset-env',
    17. {
    18. //按需加载
    19. useBuiltIns:'usage',
    20. //指定core-js版本
    21. corejs:{
    22. version:3
    23. },
    24. targets:{
    25. chrome:'60',
    26. firefox:'60',
    27. ie:'9',
    28. safari:'10',
    29. edge:'17'
    30. }
    31. }
    32. ]
    33. ]
    34. }
    35. }
    36. ]
    37. },
    38. plugins: [
    39. new HtmlWebpackPlugin({
    40. template: './src/index.html'
    41. })
    42. ],
    43. mode: 'development'

    } ```