vue.config.js配置 直接上代码

const path = require('path');
const webpack = require('webpack');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const TerserPlugin = require('terser-webpack-plugin');
module.exports = {
    publicPath: process.env.NODE_ENV === 'production' ? './' : './', // 基本路径
    outputDir: 'dist', // 输出文件目录
    assetsDir: 'static',
    lintOnSave: false, // eslint-loader 是否在保存的时候检查
    // see https://github.com/vuejs/vue-cli/blob/dev/docs/webpack.md
    // webpack配置
    chainWebpack: (config) => {
    },
    configureWebpack: (config) => {
        if (process.env.NODE_ENV === 'production') {
            // 为生产环境修改配置...
            config.mode = 'production';
            // 将每个依赖包打包成单独的js文件
            let optimization = {
                runtimeChunk: 'single',
                splitChunks: {
                    chunks: 'all',
                    maxInitialRequests: Infinity,
                    minSize: 20000,
                    cacheGroups: {
                        vendor: {
                            test: /[\\/]node_modules[\\/]/,
                            name(module) {
                                // get the name. E.g. node_modules/packageName/not/this/part.js
                                // or node_modules/packageName
                                const packageName = module.context.match(
                                    /[\\/]node_modules[\\/](.*?)([\\/]|$)/
                                )[1];
                                // npm package names are URL-safe, but some servers don't like @ symbols
                                return `npm.${packageName.replace('@', '')}`;
                            },
                        },
                    },
                },
                minimizer: [
                    new TerserPlugin({
                        terserOptions: {
                            compress: {
                                warnings: false,
                                drop_console: true, // console
                                drop_debugger: false,
                                pure_funcs: ['console.log'], // 移除console
                            },
                        },
                    }),
                ],
            };
            Object.assign(config, {
                optimization,
            });
        } else {
            // 为开发环境修改配置...
            config.mode = 'development';
        }
        Object.assign(config, {
            // 开发生产共同配置
            resolve: {
                alias: {
                    '@': path.resolve(__dirname, './src'),
                    '@c': path.resolve(__dirname, './src/components'),
                    '@p': path.resolve(__dirname, './src/pages'),
                    cesium: path.resolve(__dirname, cesiumSource),
                }, // 别名配置
            },
            amd: {
                toUrlUndefined: true,
            },
        });
        config.output.sourcePrefix = '';
        config.plugins.push(
            new webpack.ProvidePlugin({
                $: 'jquery',
                // jQuery: 'jquery',
                // 'window.jQuery': 'jquery'
            })
        );
        config.plugins.push(
            new CopyWebpackPlugin([
                {from: path.join(cesiumSource, cesiumWorkers), to: 'Workers'},
            ])
        );
        config.plugins.push(
            new CopyWebpackPlugin([
                {from: path.join(cesiumSource, 'Assets'), to: 'Assets'},
            ])
        );
        config.plugins.push(
            new CopyWebpackPlugin([
                {from: path.join(cesiumSource, 'Widgets'), to: 'Widgets'},
            ])
        );
        config.plugins.push(
            new CopyWebpackPlugin([
                {
                    from: path.join(cesiumSource, 'ThirdParty/Workers'),
                    to: 'ThirdParty/Workers',
                },
            ])
        );
        config.plugins.push(
            new webpack.DefinePlugin({
                // 5
                CESIUM_BASE_URL: JSON.stringify('./'),
            })
        );
        config.module.unknownContextCritical = false;
    },
    productionSourceMap: false, // 生产环境是否生成 sourceMap 文件
    // css相关配置
    css: {
        extract: true, // 是否使用css分离插件 ExtractTextPlugin
        sourceMap: false, // 开启 CSS source maps?
        loaderOptions: {
            css: {}, // 这里的选项会传递给 css-loader
            postcss: {}, // 这里的选项会传递给 postcss-loader
        }, // css预设器配置项
        modules: false, // 启用 CSS modules for all css / pre-processor files.
    },
    parallel: require('os').cpus().length > 1, // 是否为 Babel 或 TypeScript 使用 thread-loader。该选项在系统的 CPU 有多于一个内核时自动启用,仅作用于生产构建。
    pwa: {}, // PWA 插件相关配置 see https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-pwa
    // webpack-dev-server 相关配置
    devServer: {
        open: true,
        host: '0.0.0.0', // 允许外部ip访问
        port: '', // 端口
        https: false, // 启用https
        overlay: {
            warnings: true,
            errors: true,
        }, // 错误、警告在页面弹出
        proxy: {
            '/api': {
                target: '',
                changeOrigin: true, // 允许websockets跨域
                // ws: false,
                pathRewrite: {
                    '^/api': '',
                },
            },
        }, // 代理转发配置,用于调试环境
    },
    // 第三方插件配置
    pluginOptions: {},
};
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值