博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
webpack4.x实战七,生产模式和开发模式分开打包
阅读量:5974 次
发布时间:2019-06-20

本文共 4376 字,大约阅读时间需要 14 分钟。

生产模式中,要求css和js文件尽可能小,因此需要把css和js文件压缩;开发模式中,要便于代码的调试,不能压缩css和js文件。

使用webpack-merge

安装插件webpack-merge

npm install --save-dev webpack-merge 复制代码

按照模式创建不同的配置文件

创建文件

webpack.prod.js:用于生产环境 webpack.dev.js:用户开发环境webpack.common.js:两个环境公共配置复制代码

webpack.common.js文件内容

const path = require('path');var htmlWebpackPlugin = require('html-webpack-plugin');const extractTextPlugin = require("extract-text-webpack-plugin");const extractCSS = new extractTextPlugin("css/[name]-[hash].css");module.exports = {    entry: './src/js/app.js',    output: {        path: path.resolve(__dirname, 'dist'),        filename: 'js/[name]-[hash].js'    },    module: {        rules: [            {                test: /\.css$/,                use: extractCSS.extract({                    fallback: "style-loader", // 编译后用什么loader来提取css文件                    use: [                        { loader: 'css-loader' },                        {                            //浏览器添加前缀                            loader: 'postcss-loader',                            options: {                                ident: 'postcss',                                plugins: [                                    require('autoprefixer')({                                        broswers: ['last 5 versions']                                    })                                ]                            }                        }                    ]                })            },            {                test: /\.less$/,                use: extractCSS.extract({                    fallback: "style-loader", // 编译后用什么loader来提取css文件                    use: [                        { loader: 'css-loader' },                        {                            //浏览器添加前缀                            loader: 'postcss-loader',                            options: {                                ident: 'postcss',                                plugins: [                                    require('autoprefixer')({                                        broswers: ['last 5 versions']                                    })                                ]                            }                        },                        { loader: 'less-loader' }                    ]                })            },            {                test: /\.js$/,  //添加正则,处理js文件                use: [                    //把ES6语法转换为ES5                    { loader: 'babel-loader', options: { "presets": ["@babel/preset-env"] } }                ]            },            {                test:/\.(png|gif|jpg)$/i,                use:[                    {                        loader:'url-loader',                        options:{                            name:'images/[name].[ext]',                            limit:20000,                            publicPath:'../'                        }                    }                ]            }        ]    },    plugins: [        new htmlWebpackPlugin({            filename: 'index.html',            template: './src/template/index.html',            title: 'this is webpack title'        }),        extractCSS    ]};复制代码

webpack.dev.js文件内容

const path = require('path')const merge = require('webpack-merge');const common = require('./webpack.common.js');module.exports = merge(common,{	mode:'development', 					//开发模式});复制代码

webpack.prod.js文件内容

const path = require('path')const merge = require('webpack-merge');const common = require('./webpack.common.js');module.exports = merge(common,{	mode:'production', 						//生产模式});复制代码

修改package.json文件

"scripts": {    "dev": "webpack --config webpack.dev.js --progress --display-moudle  --colors --display-reasons",    "prod": "webpack --config webpack.prod.js --progress --display-moudle  --colors --display-reasons"  }复制代码

执行打包

生产环境 npm run prod

开发环境 npm run dev

生产环境打包js文件会被压缩。因为没有使用css压缩插件,所以css看不出效果。

总结

使用插件webpack-merge,区分生产环境和开发环境 npm install --save-dev webpack-merge

webpack.dev.js文件内容

const path = require('path')const merge = require('webpack-merge');const common = require('./webpack.common.js');module.exports = merge(common,{	mode:'development', 					//开发模式});复制代码

webpack.prod.js文件内容

const path = require('path')const merge = require('webpack-merge');const common = require('./webpack.common.js');module.exports = merge(common,{	mode:'production', 						//生产模式});复制代码

转载于:https://juejin.im/post/5cd9621ce51d453aa10dff6d

你可能感兴趣的文章
JavaScript学习总结(9)——JS常用函数(一)
查看>>
Maven+SpringMVC+MyBatis实现系统(一)
查看>>
易宝典文章——如何在Exchange 2010中使用PowerShell文本文件批量移动邮箱
查看>>
智能dns 根据地区解析
查看>>
VS2012配置Git并连接到osc@git
查看>>
索尼高清影视技术学院参观观后感
查看>>
jQuery 文本编辑器插件 HtmlBox 使用
查看>>
怎么看自己服务器的带宽?
查看>>
go的错误处理
查看>>
apache2.4.4的安装过程
查看>>
php5.3安装oracle的扩展oci8与pdo_oci
查看>>
发送超长短信的协议格式
查看>>
CentOS 6.x 快速安装L2TP ***
查看>>
mysql主主复制(双主复制)配置步骤
查看>>
一篇文章能够看懂基础源代码之JAVA篇
查看>>
什么是大数据技术架构
查看>>
【分享】如何救援記憶卡中誤刪的資料
查看>>
北方计算机专修学院“展示自我 秀出风采” 网页创意设计大赛成功举办
查看>>
DNS解析相关实验:7台主机的恩怨情仇
查看>>
Goldengate双向复制配置
查看>>