vue.config.js配置:

1.官方文档:

https://cli.vuejs.org/zh/config/#vue-config-js

2.安装依赖:
npm install compression-webpack-plugin@6.1.1
3.配置:
const path = require('path')
const CompressionPlugin = require("compression-webpack-plugin")  //引入compression-webpack-plugin插件

function resolve(dir) { return path.join(__dirname, dir) }

// vue.config.js配置
module.exports = {
    productionSourceMap: false,// 生成环境是否开启SourceMap
    outputDir: 'dist', // 打包输出文件目录
    assetsDir: 'assets', // 放置静态文件夹目录
    publicPath: process.env.NODE_ENV === 'production' ? '/keda' : './',// 部署应用包时的基本 URL

    //默认情况下,生成的静态资源在它们的文件名中包含了 hash 以便更好的控制缓存。你可以通过将这个选项设为 false 来关闭文件名哈希。(false的时候就是让原来的文件名不改变)
    filenameHashing: false,

    //是否使用eslint, @vue/cli-plugin-eslint 被安装之后生效。
    lintOnSave: process.env.NODE_ENV !== 'production' ? false : true,

    //是否使用包含运行时编译器的 Vue 构建版本。设置为 true 后你就可以在 Vue 组件中使用 template 选项了,但是这会让你的应用额外增加 10kb 左右。(默认false)
    // runtimeCompiler: false,

    /**
    * 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。
    * 打包之后发现map文件过大,项目文件体积很大,设置为false就可以不输出map文件
    * map文件的作用在于:项目打包后,代码都是经过压缩加密的,如果运行时报错,输出的错误信息无法准确得知是哪里的代码报错。
    * 有了map就可以像未加密的代码一样,准确的输出是哪一行哪一列有错。
    * */
    productionSourceMap: false,
    
    // css相关配置
    css: {
        extract: true, // 是否使用css分离插件 ExtractTextPlugin
        sourceMap: false, // 是否为 CSS 开启 source map。设置为 true 之后可能会影响构建的性能
        loaderOptions: {
            less: {
                javascriptEnabled: true //less 配置
            }
        }, // css预设器配置项
        modules: false // 启用 CSS modules for all css / pre-processor files.
    },
    configureWebpack: config => {
        //生产环境取消 console.log
        if (process.env.NODE_ENV === 'production') {
            config.optimization.minimizer[0].options.terserOptions.compress.drop_console = true
        }
    },
    chainWebpack: (config) => {
        config.resolve.alias
            .set('@$', resolve('src'))
            .set('@api', resolve('src/api'))
            .set('@assets', resolve('src/assets'))
            .set('@comp', resolve('src/components'))
            .set('@views', resolve('src/views'))

        //生产环境,开启js\css压缩
        if (process.env.NODE_ENV === 'production') {
            config.plugin('compressionPlugin').use(new CompressionPlugin({
                test: /\.(js|css|less|scss)$/, // 匹配文件名
                threshold: 10240, // 对超过10k的数据压缩
                deleteOriginalAssets: false // 不删除源文件
            }))
        }

        // 配置 webpack 识别 markdown 为普通的文件
        config.module
            .rule('markdown')
            .test(/\.md$/)
            .use()
            .loader('file-loader')
            .end()

        // 编译vxe-table包里的es6代码,解决IE11兼容问题
        config.module
            .rule('vxe')
            .test(/\.js$/)
            .include
            .add(resolve('node_modules/vxe-table'))
            .add(resolve('node_modules/vxe-table-plugin-antd'))
            .end()
            .use()
            .loader('babel-loader')
            .end()
    },
    devServer: {// dev环境 (正式环境要到服务器代理)
        host: 'localhost',
        port: 8080,
        hot: true,//热更新
        open: true,//配置自动启动浏览器
        inline: true, // 用于设置代码保存时是否自动刷新页面。
        https: false, // 用于设置是否启用https
        compress: true, // 对devServer 所有服务启用 gzip 压缩
        /* 当出现编译器错误或警告时,在浏览器中显示全屏覆盖层。默认禁用。两种写法*/
        // overlay: true, // 第一种
        overlay: { // 第二种
            warnings: true, // 警告
            errors: true // 错误
        },
        // 在所有响应中添加首部内容
        headers: {
            'Access-Control-Allow-Origin': '*',
        },
        // proxy: {
        //     '/api': {
        //         target: 'https://mock.ihx.me/mock/5baf3052f7da7e07e04a5116/antd-pro', //mock API接口系统
        //         ws: false,// 是否启用websockets
        //         changeOrigin: true,//开启代理:在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题
        //         secure: true,// 是否使用HTTPS协议, 默认false
        //         pathRewrite: {
        //             '/api': ''  //默认所有请求都加了api前缀,需要去掉
        //         }
        //     },
        // }
    },
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sun Peng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值