区域开发模式和生成模式

说明:将webpack.config.js拆分成开发时两个配置文件webpack.dev.js和webpack.prod.js分别用于开发、和生产,将公共部分集成到webpack.common.js中,打包的时候再合并,webpack-merge可以帮我干这个事。

安装merge
npm install webpack-merge -D
webpack.common.js
const path=require('path');
const HtmlWebpackPlugin=require('html-webpack-plugin');
const {CleanWebpackPlugin}= require('clean-webpack-plugin');

module.exports={
    entry:{
        main:'./index.js'
    },
    module:{
        rules:[
            {
                test:/\.jpg$/,
                use:{
                    loader:'file-loader',
                    options:{
                        outputPath:'images',
                        name:'img.jpg'
                    }
                }
            },
            {
                test: /\.css$/,
                use: ['style-loader', 'css-loader'],
            },{
                test: /\.scss$/,
                use: [
                    "style-loader", // creates style nodes from JS strings
                    "css-loader", // translates CSS into CommonJS
                    "sass-loader" // compiles Sass to CSS, using Node Sass by default
                ]
            },{ 
             test: /\.js$/,
             exclude: /node_modules/, 
             loader: "babel-loader"
            }
        ]
    },
    output:{
        path:path.resolve(__dirname,'./dist'),
        filename:'index_bundle.js'
    },
    plugins:[
        new HtmlWebpackPlugin({template:'./index.html'}),
        new CleanWebpackPlugin()
    ]
}
webpack.dev.js
const webpack=require('webpack');
const merge=require('webpack-merge');
const commonConfig=require('./webpack.common.js');
const devConfig={
    mode:'development',
    devtool:'cheap-module-eval-source-map',
    devServer:{
        contentBase:'./dist',
        open:true,
        port:8000,
        hot:true,
        hotOnly:true
    },
    plugins:[new webpack.HotModuleReplacementPlugin()]
}
module.exports=merge(commonConfig,devConfig)
webpack.prod.js
const merge=require('webpack-merge');
const commonConfig=require('./webpack.common.js');

const prodConfig={
    mode:'production',
    devtool:'cheap-module-source-map'
}

module.exports=merge(commonConfig,prodConfig)
配置package.json
"scripts": {
    "dev": "webpack-dev-server --config ./build/webpack.dev.js",
    "build":"webpack --config ./build/webpack.prod.js"
 }
项目目录
image.png

总结:对于生产环境来说是不需要devServer、hmr这些模块的功能将webpack.config.js文件分开,更利于项目的维护.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 全局安装webpack 全局安装webpack会有个问题,就是当你有两个项目依赖于不同版本的webpack,就会有...
    説好的妹紙呢阅读 1,852评论 0 11
  • 原文首发于:Webpack 3,从入门到放弃 Update (2017.8.27) : 关于 output.pub...
    昵称都被用完了衰阅读 1,913评论 4 19
  • 前言 本文主要从webpack4.x入手,会对平时常用的Webpack配置一一讲解,各个功能点都有对应的详细例子,...
    BetterChen阅读 1,957评论 0 3
  • 躺在床上 腰疼的想哭睡不着 小小年纪不知道为什么会腰疼 后面邻居的小孩儿又在哭了更睡不着了 今天我们班漏水了跟水帘...
    岁月同马阅读 221评论 0 0
  • 20190121 今天几个朋友提到瑶瑶曾经给人外表冷漠的印象。这与我接触的瑶瑶完全不同。瑶瑶对我温暖有爱,不但主动...
    湘笨儿阅读 190评论 2 4