vue.config.js 配置

3 篇文章 0 订阅
// 去除 console
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
// const path = require('path');  别名配置
// 图形化打包详情
const BundleAnalyzer = require('webpack-bundle-analyzer').BundleAnalyzerPlugin

module.exports = {
    publicPath: process.env.NODE_ENV === 'production'
    ? '/hgs'
    : './',
    // 部署应用包时的基本 URL, 用法和 webpack 本身的 output.publicPath 一致。
    // 这个值也可以被设置为空字符串 ('') 或是相对路径 ('./')
    // 这样所有的资源都会被链接为相对路径,这样打出来的包可以被部署在任意路径。
    
    // 打包输出的的文件夹(默认就是 dist)
    outputDir: 'dist',
    
    // 放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录
    assetsDir: 'static',
    
    // 指定生成的 index.html 的输出路径 (相对于 outputDir)。也可以是一个绝对路径
    indexPath: 'index.html',
    
    // 生产环境是否生成 sourceMap 文件
    productionSourceMap: false,
    
    // 每次保存时 lint (校验) 代码 (boolean | 'warning' | 'default' | 'error')
    lintOnSave: false,
    // 生产构建时禁用
    // lintOnSave: process.env.NODE_ENV !== 'production',
    
    // webpack-dev-server 相关配置
    devServer: {
        /* 自动打开浏览器 */
        open: false,
        // host: "",
        port: 9527,
        
        /* 跨域处理:使用代理 */
        proxy: {
            // '/api':{ 
            [process.env.VUE_APP_BASE_API]: {
                // 目标 ip 
                target: 'http://192.168.1.185:9300',
                // 允许跨域 
                changeOrigin: true,
                pathRewrite: {
                    // "^/api":"", 
                    ['^' + process.env.VUE_APP_BASE_API]: ''
                }
            }
        }
    }
    
    // webpack配置
    // see https://github.com/vuejs/vue-cli/blob/dev/docs/webpack.md
    chainWebpack: config => {
        // 删除懒加载模块的 prefetch,降低带宽压力
        config.plugins.delete('prefetch'),
        
        // 压缩图片
        const imagesRule = config.module.rule('images')
        imagesRule.uses.clear()
        imagesRule.use('file-loader')
            .loader('url-loader')
            .options({
                // 最大 10 MB
                limit: 10240,
                fallback: {
                    loader: 'file-loader',
                    options: {
                        // 打包后的图片路径
                        outputPath: 'static/images'
                    }
                }
            })
        // 压缩响应的app.json返回的代码压缩
        config.optimization.minimize(true)
    },
    
    // configureWebpack: (config) => {  
    // config.resolve.alias.set("@": resolve('./src'))
    configureWebpack: {
        resolve: {
            //文件优先解析后缀名顺序
            extensions: [".js", ".vue", ".json"], 
            // 别名配置
            alias: {
                '@': resolve('src')
                // "@": path.resolve(__dirname, "./src"),
            }, 
            // 自动解析确定的扩展。默认值为['.wasm', '.mjs', '.js', '.json'] 
            // 引入模块时可不带扩展: 如import File from '../path/to/file';
            extensions: ['.js','.vue','.json'],
        },
        
        // 防止将(在 public/index.html 通过 cdn 引入的)某些 import 的包(package)
        // 打包到 bundle 中而是在运行时(runtime)再去从外部获取这些扩展依赖
        // 引入的时候还是 import AMap from 'AMap'
        externals: {
            'AMap': 'AMap',
            'AMapUI': 'AMapUI'
        }
        
        // 取消console打印
        // vue3 config.optimization.minimizer[0].options.terserOptions.compress.drop_console = true
        if (process.env.NODE_ENV === 'production') {
            // webpack4.x
            optimization: {
                minimizer: [
                    new UglifyJsPlugin({
                        uglifyOptions: {
                            // 删除注释
                            output:{
                                comments:false
                            },
                            // 删除console debugger 删除警告
                            compress: {
                                warnings: false,
                                drop_console: true,//console
                                drop_debugger: false,
                                pure_funcs: ['console.log']//移除console
                            }
                        }
                    })
                ]
            }
        }
    },
    
    // css
    css: {
        // 是否将组件中的 CSS 提取至一个独立的 CSS 文件中(默认生产环境下是 true,开发环境下是 false)
        extract: true,
        sourceMap: false,
        loaderOptions: {
            // 定义全局 scss 无需引入即可使用
            sass: {
                // 注意:在 sass-loader v8 中,这个选项名是 "prependData"
                // additionalData: `@import "~@/assets/style/public.scss"`
                data: `@import '~@/assets/style/public.scss'`
            }
        }
    },
    
    

}

官方文档:https://cli.vuejs.org/zh/config/#vue-config-js

参考文档:https://webpack.docschina.org/configuration/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值