webpack4, babel-loader8, babel7综合使用

安装

npm install --save-dev babel-loader @babel/core @babel/preset-env webpack

使用

  1. 安装上面所示的插件,其中babel-loader是webpack的loader,用于打包时处理js文件,@babel/core是babel的核心功能,@babel/preset-env是babel预置的一系列转换ECMAScript2015+的插件。但是有可能不会把你代码中用到的所有特性都进行转译,这是可以通过@babel/polyfill来自动添加转义需要的功能。

    npm install --save-dev @babel/polyfill

  2. 修改webpack的配置文件

    moodule: [
    	rules: [
    		{
    			test: /\.m?js$/,
    			exclude: /(node_modules)|(bower_components)/,
    			use: {
    				loader: 'babel-loader',
    				options: {
    					presets: ['@babel-env']
    				}
    			}
    		}
    	]
    ]
    

    通过options选项可以将参数传给babel-loader

  3. 运行打包命令,js文件会被自动编译成兼容低版本浏览器的代码

一个可正确运行的webpack.config.js文件代码如下(添加了polyfill):

const HtmlWebpackPlugin = require('html-webpack-plugin')
const path = require('path')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const config = {
  mode: 'development',
  entry: ["@babel/polyfill", './src/index.js'],
  output: {
    path: path.resolve(__dirname,'dist'),
    filename: 'pushbox.bundle.js'
  },
  devServer: {
    contentBase: './dist',
  },
  module: {
    rules: [{
      test: /(\.png)|(\.jpg)|(\.gif)$/,
      use: ['file-loader']
    },
    {
      test: /\.m?js$/,
      use: {
        loader: 'babel-loader',
        options: {
          presets: ['@babel/preset-env']
        }
      }
    }]
  },
  plugins: [
    new HtmlWebpackPlugin({template: './index.html',title:'推箱子小游戏'}),
    new CopyWebpackPlugin([{
      from: './src/assets',
      to:'./assets'
    }])
  ],
  optimization: {
    minimize: true
  }
}

module.exports = config;

通过babel配置文件进行配置

通过babel配置文件,也能够向babel传递参数,我们在项目根目录下面新建babel.config.js:

module.exports = {
  presets: [
    [
      "@babel/preset-env",
      {
        targets: {
          ie: "9"
        }
      }
    ]
  ]
}

presets的详细配置项看这里:https://www.babeljs.cn/docs/babel-preset-env

你可能感兴趣的:(前端,Babel,JavaScript)