2025-03-13 09:24:48 +08:00

108 lines
3.9 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const path = require('path');
const Setting = require('./src/setting.env');
// 引入打包分析文件
const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');
// 引入js打包工具
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin');
const resolve = (dir) => {
return path.join(__dirname, dir);
};
// 项目部署基础
// 默认情况下,我们假设你的应用将被部署在域的根目录下,
// 例如https://www.my-app.com/
// 默认:'/'
// 如果您的应用程序部署在子路径中,则需要在这指定子路径
// 例如https://www.foobar.com/my-app/
// 需要将它改为'/my-app/'
// iview-admin线上演示打包路径 https://file.iviewui.com/admin-dist/
const BASE_URL = process.env.NODE_ENV === 'production' ? '/' : '/';
const env = process.env.NODE_ENV;
module.exports = {
// Project deployment base
// By default we assume your app will be deployed at the root of a domain,
// e.g. https://www.my-app.com/
// If your app is deployed at a sub-path, you will need to specify that
// sub-path here. For example, if your app is deployed at
// https://www.foobar.com/my-app/
// then change this to '/my-app/'
outputDir: Setting.outputDir,
runtimeCompiler: true,
productionSourceMap: false, //关闭生产环境下的SourceMap映射文件
baseUrl: BASE_URL,
// tweak internal webpack configuration.
// see https://github.com/vuejs/vue-cli/blob/dev/docs/webpack.md
// 如果你不需要使用eslint把lintOnSave设为false即可
lintOnSave: false,
// 打包优化
configureWebpack: (config) => {
const pluginsPro = [];
pluginsPro.push(
// js文件压缩
new UglifyJsPlugin({
uglifyOptions: {
compress: {
drop_debugger: true,
drop_console: true, //生产环境自动删除console
pure_funcs: ['console.log'], //移除console
},
},
sourceMap: false,
parallel: true, //使用多进程并行运行来提高构建速度。默认并发运行数os.cpus().length - 1。
}),
);
if (process.env.NODE_ENV === 'production') {
config.plugins = [...config.plugins, ...pluginsPro];
}
if (process.env.NODE_ENV === 'production') {
// 开启分离js
// config.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('@', '')}`;
// },
// },
// },
// },
// };
}
},
chainWebpack: (config) => {
config.resolve.alias
.set('@', resolve('src')) // key,value自行定义比如.set('@@', resolve('src/components'))
.set('_c', resolve('src/components'));
config.module
.rule('vue')
.test(/\.vue$/)
.end();
// 重新设置 alias
config.resolve.alias.set('@api', resolve('src/api'));
// node
config.node.set('__dirname', true).set('__filename', true);
config.plugin('monaco').use(new MonacoWebpackPlugin());
},
// 设为false打包时不生成.map文件
productionSourceMap: false,
// 这里写你调用接口的基础路径来解决跨域如果设置了代理那你本地开发环境的axios的baseUrl要写为 '' ,即空字符串
devServer: {
port: 1617, // 端口
},
publicPath: '/admin',
assetsDir: 'system_static',
indexPath: 'index.html',
};