1、准备
const add = (x, y) => x + y;// eslint-disable-next-lineconsole.log(add(2, 5));const promise = new Promise((resolve) => { setTimeout(() => { // eslint-disable-next-line console.log('定时器执行完了~'); resolve(); }, 1000);});// eslint-disable-next-lineconsole.log(promise);
<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>webpack</title> </head> <body> <h1>hello webpack</h1> </body></html>
2、webpack.config.js
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: [
/*
语法检查: eslint-loader eslint 注意:只检查自己写的源代码,第三方的库是不用检查的
设置检查规则:
package.json中eslintConfig中设置~
"eslintConfig": {
"extends": "airbnb-base"
}
*/
{
test: /\.js$/,
exclude: /node_modules/,
enforce: 'pre', //一个文件被多个loader处理,一定要指定loader执行的先后顺序 先执行eslint 再执行babel
loader: 'eslint-loader',
options: {
// 自动修复eslint的错误
fix: true
}
},
{
test: /\.js$/,
exclude: /(node_modules|bower_components)/,
loader: 'babel-loader',
options: {
presets: [
[ //预设环境 @babel/preset-env 基本的兼容性处理 @babel/polyfill 全部兼容性处理
'@babel/preset-env',
{
useBuiltIns: 'usage', //按需下载
corejs: {version: 3}, //指定core.js的版本
//指定浏览器版本
targets:{
chrome:"60",
firefox:"60",
ie:'9',
safari:"10",
edge:'17'
}
}
]
],
//开启babel缓存,第二次构建时可以读取之前的缓存
cacheDirectory:true //babel缓存
}
},
]
},
plugins: [
new HtmlWebpackPlugin({
template: './src/index.html'
})
],
mode: 'development'
};