Files
huangjingfen/pro_v3.5.1/view/admin/vue.config.js
apple f6227c0253 feat: 黄精粉前端功能集成 + 个人中心/资产/公排页面优化 + 去除admin copyright
主要改动:
- 个人中心: 去除HjfMemberBadge徽章, 会员等级改显示vip_name,
  "我的资产"/"公排查询"导航项改为与member-points一致风格
- 我的资产页面: 去除HjfMemberBadge, 美化卡片圆角和阴影
- 公排查询页面: 美化顶部渐变和订单卡片样式
- Admin登录页和后台布局: 彻底删除footer copyright信息
- 新增黄精粉业务页面/组件/API/Mock数据(Phase 1)
- 新增PHP环境配置文档和启动脚本

Made-with: Cursor
2026-03-13 00:49:22 +08:00

149 lines
4.6 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 Setting = require("./src/setting.env");
// 引入打包分析文件
// const { BundleAnalyzerPlugin } = require("webpack-bundle-analyzer");
// 引入Gzip压缩文件
const CompressionPlugin = require("compression-webpack-plugin");
// 引入js打包工具
const UglifyJsPlugin = require("uglifyjs-webpack-plugin");
// 拼接路径
const resolve = (dir) => require("path").join(__dirname, dir);
// 增加环境变量
process.env.VUE_APP_VERSION = require("./package.json").version;
process.env.VUE_APP_BUILD_TIME = require("dayjs")().format("YYYY-M-D HH:mm:ss");
module.exports = {
publicPath: Setting.publicPath,
lintOnSave: Setting.lintOnSave,
outputDir: Setting.outputDir,
assetsDir: Setting.assetsDir,
runtimeCompiler: true,
productionSourceMap: false, //关闭生产环境下的SourceMap映射文件
devServer: {
publicPath: Setting.publicPath,
port: 8080,
proxy: {
'/adminapi': { target: 'http://127.0.0.1:20199', changeOrigin: true },
'/api': { target: 'http://127.0.0.1:20199', changeOrigin: true },
'/kefuapi': { target: 'http://127.0.0.1:20199', changeOrigin: true },
},
},
// 打包优化
configureWebpack: (config) => {
const pluginsPro = [];
pluginsPro.push(
new CompressionPlugin({
algorithm: "gzip",
test: /\.js$|\.html$|\.css$/, // 匹配文件名
minRatio: 0.8, // 压缩率小于1才会压缩
threshold: 10240, // 对超过10k的数据压缩
deleteOriginalAssets: false // 是否删除未压缩的源文件谨慎设置如果希望提供非gzip的资源可不设置或者设置为false比如删除打包后的gz后还可以加载到原始资源文件
})
);
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];
}
},
css: {
sourceMap: false, // css sourceMap 配置
loaderOptions: {
less: {},
},
},
transpileDependencies: ["view-design", "iview", "vuedraggable"],
// 默认设置: https://github.com/vuejs/vue-cli/tree/dev/packages/@vue/cli-service/lib/config/base.js
chainWebpack: (config) => {
/**
* 删除懒加载模块的 prefetch preload降低带宽压力
* https://cli.vuejs.org/zh/guide/html-and-static-assets.html#prefetch
* https://cli.vuejs.org/zh/guide/html-and-static-assets.html#preload
* 而且预渲染时生成的 prefetch 标签是 modern 版本的,低版本浏览器是不需要的
*/
config.plugins.delete("prefetch").delete("preload");
// 解决 cli3 热更新失效 https://github.com/vuejs/vue-cli/issues/1559
config.resolve.symlinks(true);
config
// 开发环境
.when(
process.env.NODE_ENV === "development",
// sourcemap不包含列信息
(config) => config.devtool("cheap-source-map")
)
// 非开发环境
.when(process.env.NODE_ENV !== "development", () => {});
// 不编译 iView Pro
config.module
.rule("js")
.test(/\.jsx?$/)
.exclude.add(resolve("src/libs/iview-pro"))
.end();
// 使用 iView Loader
config.module
.rule("vue")
.test(/\.vue$/)
.use("iview-loader")
.loader("iview-loader")
.tap(() => {
return Setting.iviewLoaderOptions;
})
.end();
// markdown
config.module
.rule("md")
.test(/\.md$/)
.use("text-loader")
.loader("text-loader")
.end();
// i18n
config.module
.rule("i18n")
.resourceQuery(/blockType=i18n/)
.use("i18n")
.loader("@kazupon/vue-i18n-loader")
.end();
// image exclude
const imagesRule = config.module.rule("images");
imagesRule
.test(/\.(png|jpe?g|gif|webp|svg)(\?.*)?$/)
.exclude.add(resolve("src/assets/svg"))
.end();
// 重新设置 alias
config.resolve.alias.set("@api", resolve("src/api"));
// node
config.node.set("__dirname", true).set("__filename", true);
// 判断是否需要加入模拟数据
// const entry = config.entry("app");
// if (Setting.isMock) {
// entry.add("@/mock").end();
// }
},
};