我在上一篇文章:【Webpack4 创建项目以及打包一个JS文件】 已经搭建过环境以及创建过项目了。
1、创建一个文件夹 webpack,通过命令行 cd 到该文件夹
$ cd /webpack
2、进行初始化
$ npm init
3、安装 babel
$ npm install -D babel-loader @babel/core @babel/preset-env
4、然后我们新建一个 main.js 以及一个 index.html,跟上一个文章中一样用于测试
5、创建 webpack.config.js 文件,并设置 module 进行处理指定文件
var config = { // 入口文件 entry: { main: './main.js' }, // 输出配置 output: { // 输出得到的文件,文件名可以随意写 filename: 'dzm.js' }, // 模块的加载,这里通过正则表达式去匹配不同后缀的文件名,然后给它们定义不同的加载器 module: { // 在 webpack3.x 中还保留之前版本的 loaders,与 rules 并存都可以使用,在新版中完全移除了 loaders,必须使用 rules。 // loaders: [ { xxx } ] rules: [ { // 文件匹配正则 test: /\.js$/, // 符合匹配规则的文件则使用 use 中指定的框架来处理它 use: 'babel-loader', // 设置指定文件不需要进行匹配处理 exclude: '/node_module/' } ] } }; module.exports = config;
6、到这里我们还需要使用 Babel Presets,也就是我们需要处理的 js 文件还得指定按照什么规范处理,上面命令行我们已经一块安装了 @babel/preset-env,现在只需要修改 webpack.config.js 对它进行使用:
var config = { // 入口文件 entry: { main: './main.js' }, // 输出配置 output: { // 输出得到的文件,文件名可以随意写 filename: 'dzm.js' }, // 模块的加载,这里通过正则表达式去匹配不同后缀的文件名,然后给它们定义不同的加载器 module: { // 在 webpack3.x 中还保留之前版本的 loaders,与 rules 并存都可以使用,在新版中完全移除了 loaders,必须使用 rules。 // loaders: [ { xxx } ] rules: [ { // 文件匹配正则 test: /\.js$/, // 符合匹配规则的文件则使用 use 中指定的框架来处理它 // use: 'babel-loader', // 我们现在需要使用 babel-loader 里面的 Babel Presets,这里 use 也可以换成数组 [{ loader: xxx ... }] use: { // 表示我们使用的是 babel-loader loader: 'babel-loader', // 并指定使用的参数 options: { // 这里就可以设置指定我们刚才安装的 @babel/preset-env // presets: ['@babel/preset-env'] // 如果我需要给 @babel/preset-env 设置参数的时候则需要这么写 presets: [ ['@babel/preset-env', { // 这个是 @babel/preset-env 里面的参数,它可以更具指定的目标进行编译跟不编译 // 它可以指定 browsers 浏览器,指定在什么版本的浏览器需要编译,什么版本的浏览器放弃编译 targets: { // 可以指定全球占用率大于百分之多少的浏览器需要进行支持,也可以指定主浏览器的最后几个版本进行支持 // 这个浏览器的数据其实也是从 【browserslist】 【can i use】这些开源项目上来的, github 上能找到。 browsers: ['> 1%', 'last 2 versions'] // 也可以指定浏览器 chrome 版本 // chrome: '52' } }] ] } }, // 设置指定文件不需要进行匹配处理 exclude: '/node_module/' } ] } }; module.exports = config;
7、到这里我们就可以进行打包测试了,我们现在需要在之前新建的 main.js 中写一些测试代码:
let func = () => {} const num = 100 let array = [1, 2, 3, 4]
然后我们通过命令行进行打包使用即可:
$ webpack