webpack 生产/开发环境配置文件分离

npm install webpack-merge -D

build目录下:

base.config.js

const path=require("path")
const { VueLoaderPlugin } = require("vue-loader")
const HtmlWebpackPlugin=require("html-webpack-plugin")
module.exports={
    entry : './src/main.js',
    output : {
        path : path.resolve(__dirname,"../dist"),
        filename : 'bundle.js',
        assetmodulefilename : 'images/[name]-[hash:8][ext][query]'
    },
    module : {
        rules : [
            {
                test : /\.css$/,
                use : [
                    
                    "style-loader",
                    "css-loader",
                ]
            },
            {
                test : /\.scss$/,
                use : [
                    {
                        loader:"style-loader"
                    },{
                        loader : "css-loader",
                    },
                    {
                        loader : "sass-loader"
                    }
                ]
            },
            {
                test : /\.(jpg|png|gif)$/,
                type : 'asset/resource'
            },
            {
                test : /\.m?js$/,
                exclude : /(node_modules|bower_components)/,
                use : {
                    loader : 'babel-loader',
                    options : {
                        presets : ["@babel/preset-env"]
                    }
                }
            },
            {
                test : /\.vue$/,
                use : ["vue-loader"]
            }
        ]
    },
    plugins : [
        new VueLoaderPlugin(),
        new HtmlWebpackPlugin({
            template :'index.html'
        })
    ],
    resolve : {
        extensions : [".js",".css",".vue"],
        alias : {
            //编译运行时均解析template
            "vue$" : "vue/dist/vue.esm.js"
        }
    },
}

pro.config.js

const webpack=require("webpack")
const WebpackMerge=require("webpack-merge")

const baseConfig=require('./base.config')

module.exports=WebpackMerge.merge(baseConfig,{
    plugins : [
        new webpack.BannerPlugin("版权归ywxk所有"),
    ],
})

dev.config.js


const WebpackMerge=require('webpack-merge')
const baseConfig=require('./base.config')

module.exports=WebpackMerge.merge(baseConfig,{
    mode : "development",
    devServer : {
        static : './dist',
        open : true,
    }
})

package.json

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "webpack --config ./build/pro.config.js",
    "dev": "webpack-dev-server --config ./build/dev.config.js"
  },

相关文章

一准备工作umi为react的一个封装比较nice的脚手架。优点当然...
webpack在引入两个依赖的包时,可能需要使用shimming,意思是...
  Happypack (plugin)多线程使用loader编译文件treeshaki...
一目录结构├──build//构建相关├──config//配置相关├─...
接着第一节的demo现在我们尝试整合一些其他资源,比如图像,...
webpack的打包原理识别入口文件通过逐层识别模块依赖(Common...