webpack-配置文件的分离

webpack-配置文件的分离

1.新建一个文件夹命名为build

在该文件夹下创建三个js文件:
在这里插入图片描述

2.将原来webpack.config.js文件中的内容全部复制到三个文件中

再对已经复制的内容进行选择性删除。
首先,安装npm install webpack-merge --save-dev
再对文件中内容进行内容修改。

例如,三个文件内容结果如下:

注意:base中放的代码应该是公共(生产和开发)的东西。
base.config.js内容如下:

const path = require('path')
const  webpack  = require('webpack')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')

module.exports = {
    entry:'./src/main.js',
    output:{
        // 动态获取绝对路径
        //可以将两个路径拼接dirname全局上下文
        //md dirname前面是两个下划线!!!!
        path: path.resolve(__dirname,"../dist"),
        filename:'bundle.js',
        // publicPath:'dist/'
    },
    module:{
        rules:[
            {
                //test 匹配css
                test:/\.css$/,
                //css-loader只负责css加载,不负责解析
                //style-loader 负责将样式添加到dom中
                //使用多个loader时,是从右向左的
                use: ['style-loader','css-loader'],
            },
            {
                test: /\.less$/,
                use: [{
                loader: "style-loader" // creates style nodes from JS strings
                }, {
                loader: "css-loader" // translates CSS into CommonJS
                }, {
                loader: "less-loader" // compiles Less to CSS
                }]
            },
            {
                test: /\.(png|jpg|gif)$/,
                use: [
                  {
                    loader: 'url-loader',
                    options: {
                        //当加载的图片,小于limit时,会将图片编译成base64字符串形式
                        //当大于limit时,需要file-loader配置 需要安装
                      limit: 17000,
                      name:'img/[name].[hash:8].[ext]'
                    }
                  }
                ]
              },
            {
              test: /\.js$/,
              //exclude:排除
              //include:包含
              exclude: /(node_modules|bower_components)/,
              use: {
                loader: 'babel-loader',
                options: {
                presets: ['es2015']
                }
              }
            },
            {
              test:/\.vue$/,
              use:['vue-loader']
            }
        ]
    },
    resolve:{
      //alias:起别名
      alias:{
        'vue$':'vue/dist/vue.esm.js' //指向具体的文件夹 先去node_modules找
      }
    },
    plugins:[
      new webpack.BannerPlugin('最终版权归我所有'),
      new HtmlWebpackPlugin({
        template:'index.html'
      })
    ]    
}

dev.config.js代码如下:

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

module.exports = webpackMerge.merge(baseConfig,{
    devServer:{
        contentBase:'./dist',
        inline:true
      }
})

prod.config.js代码如下:

const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
const webpackMerge = require('webpack-merge')
const baseConfig = require('./base.config')

module.exports = webpackMerge.merge(baseConfig,{
    plugins:[
        new UglifyJsPlugin()
      ]
})


注意dev和prod文件对base文件的导入

3.将文件打包到新建的build文件夹中

此时可以删除原来的webpack.config.js文件,但是如果直接打包的话,会报错,因为之前指定的打包文件还没有更改。
package.json文件中做如下修改:

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

现在打包,确实可以将文件打包到build中,但是dist文件也会打包到build中,需要在base.config.js文件中修改。如下图画红线的部分。定位到上上一级的文件夹中的dist
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值