趁着假期闲暇,练习下webpack4.0的一些配置。
webpack4优化压缩js和css方式
| 1 | let UglifyJsPlugin = require("uglifyjs-webpack-plugin"); | 
注意:若想优化生效,必须将mode改为production模式
详情见npm官网  
expose-loader 暴露全局loader,称为内联loader。到目前为止,有内联loader,普通normal loader,前置loader (pre loader),后置loader (post loader)
在项目中引入jquery类似模块方式
webpack.config.js配置
| 1 | let webpack =require('webpack'); | 
webpack引入基层模块方式
- expose-loader暴露到全局window上
- providePlugin给每个模块提供$
- cdn方式引入不打包,webpack需要配置externals
打包文件分类
| 1 | new MiniCssExtractPlugin({ | 
将css打包在css文件夹中
| 1 | { | 
图片打包路径前配置publicPath即可。
生成source-map便于调试,几种不同选项
(1)增加源码映射文件,便于调试。标示报错文件行和列,大而全文件1
devtool:'source-map'
(2)不会产生单独文件,但是可以显示行和列1
devtool:'eval-source-map'
(3)不会产生列,但是是一个单独的映射文件,用于调试1
devtool:'cheap-module-source-map'
(4)不会产生文件,集成在打包后的文件中,也不会产生列1
devtool:'cheap-module-eval-source-map'
监听文件变动,实时打包
| 1 | watch:true, | 
webpack插件应用
- cleanWebpackPlugin(需要安装依赖模块) - 1 - new CleanWebpackPlugin('./dist')//先清空dist目录下的文件在打包 
- copyWebpackPlugin(需要安装依赖模块) - 1 
 2
 3
 4
 5
 6- new CopyWebpackPlugin([ 
 {
 from:'./doc',
 to:'./dist'
 }//可以写多个,拷贝多个目录文件
 ])
- bannerPlugin(内置插件) - 1 
 2- //添加版权注释信息 
 new Webpack.BannerPlugin('make by mgl 2019-2-1')
运行打包命令后,可在打包文件中看到注释信息
| 1 | npm run dev | 
webpack中devServer几种配置
(1)单纯配置跨域代理方式1
2
3
4
5
6proxy:{
     '/api':{
         target:'http://localhost:3000',
         pathRewrite:{'/api':''}
     }
}
(2)前端单纯mock数据1
2
3
4
5before(app){
    app.get('/user',(req,res)=>{
        res.json({name:'mgl-before'});
    })
}
(3)有服务端,不用代理来处理,在服务端中启动webpack,用服务端端口1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19//express
let express = require('express');
let webpack=require('webpack');
//引入中间件
let middle=require('webpack-dev-middleware');
let config=require('./webpack.config.js');
let compiler=webpack(config);//webpack处理返回结果
let app=express();
app.use(middle(compiler));
app.get('/user',(req,res)=>{
    res.json({name:'mgl'});
})
app.listen(3000)
resolve属性配置
| 1 | resolve:{//解析第三方模块 | 
陆续更新中,欢迎关注!
 
        