webpack配置分离

 

1.配置

1.插件安装

npm install webpack-merge@4.0.0 --save-dev

2.build新建文件夹

将webpack.config.js代码CV进这三个文件并作删减,最后删除webpack.config.js文件

(1)base.config.js

因为base引入dist文件夹位置变换了所以因改为

   path: path.resolve(__dirname, '../dist'),//动态获取打包后的文件路径,path.resolve拼接路径

 

//1.导入node的path包获取绝对路径,需要使用npm init初始化node包
const path = require('path')
const webpack = require('webpack')
const HtmlWebpackPlugin = require('html-webpack-plugin')
​
//2.配置webpack的入口和出口
module.exports = {
  entry: './src/main.js',//入口文件
  output: {
    path: path.resolve(__dirname, '../dist'),//动态获取打包后的文件路径,path.resolve拼接路径
    filename: 'bundle.js',//打包后的文件名
    // publicPath: 'dist/'
  },
  module: {
    rules: [
      {
        test: /\.css$/,//正则表达式匹配css文件
        //css-loader只负责css文件加载,不负责解析,要解析需要使用style-loader
        use: [{
          loader: 'style-loader'
        }, {
          loader: 'css-loader'
        }]//使用loader
      },
      {
        test: /\.less$/,//正则表达式匹配css文件
        //css-loader只负责css文件加载,不负责解析,要解析需要使用style-loader
        use: [{
          loader: 'style-loader'
        }, {
          loader: 'css-loader'
        }, {
          loader: 'less-loader'//less文件loader
        }]//使用loader
      },
      {
        test: /\.(png|jpg|gif)$/,//匹配png/jpg/gif格式图片
        use: [
          {
            loader: 'url-loader',
            options: {
              limit: 8192,//图片小于8KB时候将图片转成base64字符串,大于8KB需要使用file-loader
              name: 'img/[name].[hash:8].[ext]'//img表示文件父目录,[name]表示文件名,[hash:8]表示将hash截取8位[ext]表示后缀
            }
          }
        ]
      },
      {
        test: /\.js$/,
        //排除node模块的js和bower的js
        exclude: /(node_modules|bower_components)/,
        use: {
          loader: 'babel-loader',
          options: {
            //如果要使用@babel/preset-env这里需要在根目录新建一个babel的文件
            // presets: ['@babel/preset-env']
            //这里直接使用指定
            presets: ['es2015']
          }
        }
      },
      {
        test: /\.vue$/,
        use: {
          loader: 'vue-loader'
        }
      }
    ]
  },
  resolve: {
    //alias:别名
    //git commit -m'注释'
    // git c ''
    //alias
    alias: {
      'vue$': 'vue/dist/vue.esm.js'
    }
  },
  plugins:[
    new webpack.BannerPlugin('最终版权归你爹我所有'),
    new HtmlWebpackPlugin({
      template:'index.html'
    }),
]
 
}
​

(2)dev.config.js

const baseConfig = require("./base.config");
const webpackMerge = require('webpack-merge');
module.exports = webpackMerge(baseConfig,{
  devServer:{
    contentBase:'./dist',     //为哪一个文件夹提供本地服务,默认根文件夹,这里填写./dist
    inline:true   //页面实时刷新
  }
 
})

(3)prod.config.js

const UglifyWebpackPlugin = require('uglifyjs-webpack-plugin')
const webpackMerge = require('webpack-merge');
const baseConfig = require('./base.config')
module.exports = webpackMerge(baseConfig,{
    plugins:[
        new UglifyWebpackPlugin()
    ]
})
​

2.运行

npm run build

 

posted @ 2021-06-21 15:22  ajaXJson  阅读(43)  评论(0编辑  收藏  举报