123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- // 存放dev和prod配置
- const path = require('path');
- const webpack = require('webpack');
- const HtmlWebpackPlugin = require('html-webpack-plugin');
- const VueLoaderPlugin = require('vue-loader/lib/plugin');
- // 第三方库单独打包
- const AutoDllPlugin = require('autodll-webpack-plugin');
- // 分离css,打包到单独文件
- const MiniCssExtractPlugin = require('mini-css-extract-plugin');
- module.exports = {
- entry: {
- bundle: path.resolve(__dirname, '../src/main.js')
- },
- output: {
- path: path.resolve(__dirname, '../dist'),
- filename: '[name].[hash].js'
- },
- module: {
- rules: [
- {
- test: /\.vue$/,
- loader: 'vue-loader'
- },
- {
- test: /\.js$/,
- use: ['babel-loader'],
- include: path.resolve(__dirname + '/src/'),
- exclude: /node_modules/
- },
- {
- test: /\.(png|svg|jpg|gif)$/,
- use: [
- 'file-loader'
- ]
- },
- {
- test: /\.(woff|woff2|eot|ttf|otf)$/,
- use: [
- 'file-loader'
- ]
- }
- ]
- },
- plugins: [
- new webpack.HashedModuleIdsPlugin(), // 解决vender后面的hash每次都改变
- new HtmlWebpackPlugin({
- template: path.resolve(__dirname, '../index.html')
- }),
- new AutoDllPlugin({
- inject: true, // will inject the DLL bundle to index.html
- debug: true,
- filename: '[name]_[hash].js',
- path: './dll',
- entry: {
- vendor: ['vue', 'vue-router', 'vuex', 'element-ui']
- }
- }), //单独打包第三方库
- new VueLoaderPlugin(), // 它的职责是将你定义过的其它规则复制并应用到 .vue 文件里相应语言的块
- new webpack.optimize.SplitChunksPlugin() // 提取公共代码
- ],
- resolve: {
- extensions: ['.js', '.css', '.vue'],// 省去后缀
- alias: {
- 'vue$': 'vue/dist/vue.esm.js', //配置别名 确保webpack可以找到.vue文件
- "@": path.resolve(__dirname, '../src'),
- "components": path.resolve(__dirname, '../src/components'),
- "utils": path.resolve(__dirname + '../src/utils')
- },
- modules: ['node_modules']
- }
- }
|