Commit 354158d0 authored by gengshaojing's avatar gengshaojing

fix: 解决合并冲突

parents 757f1431 ee01e22b
# EditorConfig is awesome: https://EditorConfig.org
# top-most EditorConfig file
root = true
[*]
indent_style = space
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = false
insert_final_newline = false
\ No newline at end of file
......@@ -7,4 +7,3 @@ public
dist
.prettierrc.js
.eslintrc.js
server/
module.exports = {
root: true,
env: {
node: true,
},
extends: ['plugin:vue/vue3-essential', 'eslint:recommended', '@vue/prettier'],
parserOptions: {
parser: 'babel-eslint',
},
rules: {
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
},
overrides: [
{
files: [
'**/__tests__/*.{j,t}s?(x)',
'**/tests/unit/**/*.spec.{j,t}s?(x)',
],
env: {
jest: true,
},
root: true,
env: {
node: true,
},
extends: ["plugin:vue/vue3-essential", "eslint:recommended", "@vue/prettier"],
parserOptions: {
parser: "babel-eslint",
},
rules: {
"no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
"no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
"prettier/prettier": "error",
"vue/script-setup-uses-vars": "off",
"no-unused-vars": "off",
},
],
};
......@@ -7,7 +7,6 @@ dist
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
......
// https://prettier.io/docs/en/options.html
module.exports = {
printWidth: 150,
tabWidth: 4,
semi: true,
singleQuote: false,
trailingComma: "all",
bracketSpacing: true,
jsxBracketSameLine: false,
htmlWhitespaceSensitivity: "ignore",
endOfLine: "auto",
vueIndentScriptAndStyle: true,
};
{
// 保存自动格式化
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
// For ESLint
"source.fixAll.eslint": true
},
"eslint.validate": [
"vue",
"javascript",
"javascriptreact"
],
// 设置全部语言的默认格式化程序为prettier
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[jsonc]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[vue]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[html]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[markdown]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[css]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[less]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
}
module.exports = {
presets: ['@vue/cli-plugin-babel/preset'],
presets: ["@vue/cli-plugin-babel/preset"],
};
This diff is collapsed.
{
"name": "op-management",
"version": "0.1.0",
"private": true,
"main": "app.js",
"scripts": {
"dev": "sh ./bin/start.sh development",
"test": "sh ./bin/start.sh test",
"prod": "sh ./bin/start.sh production",
"koa": "nodemon app.js",
"web-dev": "cross-env NODE_ENV=development vue-cli-service serve",
"web-test": "cross-env NODE_ENV=test vue-cli-service build",
"web-build": "cross-env NODE_ENV=production vue-cli-service build",
"test:unit": "vue-cli-service test:unit",
"lint": "vue-cli-service lint"
},
"dependencies": {
"@types/qr-image": "^3.2.4",
"axios": "^0.21.1",
"core-js": "^3.6.5",
"dayjs": "^1.10.6",
"element-plus": "^1.0.2-beta.44",
"form-data": "^4.0.0",
"json-bigint": "^1.0.0",
"koa": "^2.13.1",
"koa-body": "^4.2.0",
"koa-bodyparser": "^4.3.0",
"koa-router": "^10.0.0",
"koa-static": "^5.0.0",
"koa-views": "^7.0.1",
"moment": "^2.29.1",
"qr-image": "^3.2.0",
"request": "^2.88.2",
"uglifyjs-webpack-plugin": "^2.2.0",
"uuid": "^8.3.2",
"vue": "3.0.11",
"vue-router": "^4.0.0-beta.12",
"vuex": "^4.0.0-beta.4"
},
"devDependencies": {
"@testing-library/vue": "^6.4.2",
"@vue/cli-plugin-babel": "^4.5.6",
"@vue/cli-plugin-eslint": "^4.5.6",
"@vue/cli-plugin-unit-jest": "^4.5.6",
"@vue/cli-service": "^4.5.6",
"@vue/compiler-sfc": "^3.0.0-beta.1",
"@vue/eslint-config-prettier": "^6.0.0",
"@vue/test-utils": "^2.0.0-alpha.1",
"babel-eslint": "^10.1.0",
"babel-jest": "^27.0.6",
"cross-env": "^7.0.3",
"eslint": "^6.7.2",
"eslint-plugin-prettier": "^3.1.3",
"eslint-plugin-vue": "^7.0.0-alpha.0",
"jest": "^27.0.6",
"less": "^3.0.4",
"less-loader": "^5.0.0",
"nodemon": "^2.0.7",
"pm2": "3.5.1",
"prettier": "^1.19.1",
"vue3-jest": "^27.0.0-alpha.1"
},
"browserslist": [
"> 1%",
"last 10 versions",
"not ie <= 8",
"iOS >= 8",
"Android >= 4.1"
],
"license": "YIDIAN"
"name": "op-management",
"version": "0.1.0",
"private": true,
"main": "app.js",
"scripts": {
"dev": "sh ./bin/start.sh development",
"test": "sh ./bin/start.sh test",
"prod": "sh ./bin/start.sh production",
"koa": "nodemon app.js",
"web-dev": "cross-env NODE_ENV=development vue-cli-service serve",
"web-test": "cross-env NODE_ENV=test vue-cli-service build",
"web-build": "cross-env NODE_ENV=production vue-cli-service build",
"web-build-report": "cross-env NODE_ENV=production vue-cli-service build --report",
"test:unit": "vue-cli-service test:unit",
"lint": "vue-cli-service lint"
},
"dependencies": {
"axios": "^0.21.1",
"core-js": "^3.6.5",
"dayjs": "^1.10.6",
"element-plus": "^1.0.2-beta.44",
"form-data": "^4.0.0",
"json-bigint": "^1.0.0",
"koa": "^2.13.1",
"koa-body": "^4.2.0",
"koa-bodyparser": "^4.3.0",
"koa-router": "^10.0.0",
"koa-static": "^5.0.0",
"koa-views": "^7.0.1",
"moment": "^2.29.1",
"qr-image": "^3.2.0",
"request": "^2.88.2",
"uuid": "^8.3.2",
"vue": "3.0.11",
"vue-router": "^4.0.0-beta.12",
"vuex": "^4.0.0-beta.4"
},
"devDependencies": {
"@vue/cli-plugin-babel": "^4.5.6",
"@vue/cli-plugin-eslint": "~4.5.0",
"@vue/cli-service": "^4.5.6",
"@vue/compiler-sfc": "^3.0.0-beta.1",
"@vue/eslint-config-prettier": "^6.0.0",
"babel-eslint": "^10.1.0",
"cross-env": "^7.0.3",
"eslint": "^6.7.2",
"eslint-plugin-prettier": "^3.3.1",
"eslint-plugin-vue": "^7.17.0",
"less": "^3.0.4",
"less-loader": "^5.0.0",
"lint-staged": "^11.1.2",
"nodemon": "^2.0.7",
"pm2": "3.5.1",
"prettier": "^2.2.1"
},
"browserslist": [
"> 1%",
"last 10 versions",
"not ie <= 8",
"iOS >= 8",
"Android >= 4.1"
],
"license": "YIDIAN",
"gitHooks": {
"pre-commit": "lint-staged"
},
"lint-staged": {
"src/**/*.{js,vue}": [
"eslint --fix"
],
"server/**/*.js": [
"eslint --fix"
]
}
}
This diff is collapsed.
......@@ -10,27 +10,27 @@
</template>
<script>
import { getCookie, redirectToLogin } from '@/utils/util';
import { fetchCurrentUser } from './service/user';
import { getCookie, redirectToLogin } from "@/utils/util";
import { fetchCurrentUser } from "./service/user";
export default {
async mounted() {
if (this.$store.state.permissions && this.$store.state.userInfo) return;
if (!getCookie('username') && window.location.pathname != '/op/login') {
this.$message('请先登录');
if (!getCookie("username") && window.location.pathname != "/op/login") {
this.$message("请先登录");
return redirectToLogin();
}
if (!this.$store.state.permissions) {
const { status, user } = await fetchCurrentUser();
if (status === 'success') {
this.$store.commit('updateUserInfo', user);
await this.$store.dispatch('updateUserPermission', { email: user.email });
this.$store.dispatch('fetchPermission', {
appId: 'merchant-op-auditing'
if (status === "success") {
this.$store.commit("updateUserInfo", user);
await this.$store.dispatch("updateUserPermission", { email: user.email });
this.$store.dispatch("fetchPermission", {
appId: "merchant-op-auditing",
});
}
}
}
},
};
</script>
......
@import './styles/reset.less';
@import './styles/loading.less';
@import "./styles/reset.less";
@import "./styles/loading.less";
html,
body,
#root,
#app {
height: 100%;
height: 100%;
}
body {
margin: 0;
margin: 0;
}
......@@ -16,42 +16,38 @@ import { ElMessage } from "element-plus";
// 处理路由权限
router.beforeResolve(async (to, from, next) => {
if (!to.meta.requireAuth) {
next();
return true;
}
if (!store.state.permissions) {
const { status, user } = await fetchCurrentUser();
next();
return true;
}
if (!store.state.permissions) {
const { status, user } = await fetchCurrentUser();
if (status === "success") {
store.commit("updateUserInfo", user);
await store.dispatch("updateUserPermission", { email: user.email });
store.dispatch("fetchPermission", {
appId: "merchant-op-auditing",
});
} else {
redirectToLogin();
return ElMessage("您没有权限");
if (status === "success") {
store.commit("updateUserInfo", user);
await store.dispatch("updateUserPermission", { email: user.email });
store.dispatch("fetchPermission", {
appId: "merchant-op-auditing",
});
} else {
redirectToLogin();
return ElMessage("您没有权限");
}
}
}
// if (isDefault === "2") {
// await store.dispatch("updateUserPermission", {
// email: localStorage.getItem("_user_email")
// });
// }
// if (isDefault === "2") {
// await store.dispatch("updateUserPermission", {
// email: localStorage.getItem("_user_email")
// });
// }
if (!checkPathAuth(to.path)) {
redirectToLogin();
return ElMessage("您没有权限");
// router.push({name: 'Forbidden'})
} else {
next();
return true;
}
if (!checkPathAuth(to.path)) {
redirectToLogin();
return ElMessage("您没有权限");
// router.push({name: 'Forbidden'})
} else {
next();
return true;
}
});
createApp(App)
.use(router)
.use(store)
.use(ElementPlus, { locale })
.mount("#app");
createApp(App).use(router).use(store).use(ElementPlus, { locale }).mount("#app");
......@@ -3,221 +3,201 @@ import { handlerSuccessResponse } from "@/utils/handlerResponse";
// 获取主页配送员列表
export async function getList(params) {
const res = await axios.post(
"/api/v1/order/deliverer/list_day_deliverer_conf",
params
);
return res;
const res = await axios.post("/api/v1/order/deliverer/list_day_deliverer_conf", params);
return res;
}
// 获取分配配送员列表
export async function getDelivererList(params) {
const res = await axios.post(
"/api/v1/order/deliverer/list_day_deliverer",
params
);
return res;
const res = await axios.post("/api/v1/order/deliverer/list_day_deliverer", params);
return res;
}
// 添加配送员
export async function getAddDeliverer(params) {
const res = await axios.post("/api/v1/order/deliverer/add_deliverer", params);
return res;
const res = await axios.post("/api/v1/order/deliverer/add_deliverer", params);
return res;
}
// 分配配送员
export async function getSaveDeliverer(params) {
const res = await axios.post(
"/api/v1/order/deliverer/save_day_deliverer",
params
);
return res;
const res = await axios.post("/api/v1/order/deliverer/save_day_deliverer", params);
return res;
}
// 下载配送路线 -lh
export async function getDeliveryRoutes(params) {
const res = await axios.post("/api/v1/order/deliverer/build_plan", params);
return handlerSuccessResponse(res);
const res = await axios.post("/api/v1/order/deliverer/build_plan", params);
return handlerSuccessResponse(res);
}
// 查看邮件记录 -lh
export async function getEmailRecords(params) {
const res = await axios.post("/api/v1/order/deliverer/plan_down_log", params);
//return Promise.reject(res);
return handlerSuccessResponse(res);
const res = await axios.post("/api/v1/order/deliverer/plan_down_log", params);
//return Promise.reject(res);
return handlerSuccessResponse(res);
}
// 老订单管理
// 获取订单列表
export async function getOrderList(params) {
const res = await axios.get("/api/v1/order/oldbackground/order_list", {
params
});
return res;
const res = await axios.get("/api/v1/order/oldbackground/order_list", {
params,
});
return res;
}
// 获取活动名称
export async function getMarketingList() {
const res = await axios.get("/api/v1/order/oldbackground/marketing_list");
return res;
const res = await axios.get("/api/v1/order/oldbackground/marketing_list");
return res;
}
// 获取商品名称
export async function getGoodsList(params) {
const res = await axios.get("/api/v1/order/oldbackground/goods_list", {
params
});
return res;
const res = await axios.get("/api/v1/order/oldbackground/goods_list", {
params,
});
return res;
}
// 获取自提点
export async function getSubShopList(params) {
const res = await axios.get("/api/v1/order/oldbackground/sub_shop_list", {
params
});
return res;
const res = await axios.get("/api/v1/order/oldbackground/sub_shop_list", {
params,
});
return res;
}
// 导出订单
export async function orderExport(params) {
const res = await axios.get("/api/v1/order/oldbackground/order_export", {
params
});
return res;
const res = await axios.get("/api/v1/order/oldbackground/order_export", {
params,
});
return res;
}
// 打印订单
export async function orderPrint(params) {
const res = await axios.get("/api/v1/order/oldbackground/order_print", {
params
});
return res;
const res = await axios.get("/api/v1/order/oldbackground/order_print", {
params,
});
return res;
}
// 订单退款列表
export async function orderItemList(params) {
const res = await axios.get("/api/v1/order/oldbackground/order_item_list", {
params
});
return res;
const res = await axios.get("/api/v1/order/oldbackground/order_item_list", {
params,
});
return res;
}
// 订单退款
export async function refundOrder(orderId, itemsToRefund) {
// const params = {
// order_id: orderId,
// refund_list: itemsToRefund
// };
const res = await axios.post("/api/v1/order/oldbackground/order_refund", {
order_id: orderId,
refund_list: itemsToRefund
});
return res;
// const params = {
// order_id: orderId,
// refund_list: itemsToRefund
// };
const res = await axios.post("/api/v1/order/oldbackground/order_refund", {
order_id: orderId,
refund_list: itemsToRefund,
});
return res;
}
// 订单驳回
export async function orderRefundReject(params) {
const res = await axios.get(
"/api/v1/order/oldbackground/order_refund_reject",
{
params
}
);
return res;
const res = await axios.get("/api/v1/order/oldbackground/order_refund_reject", {
params,
});
return res;
}
// 导出订单
export function getOrderExportURL(eventId, type) {
var ENV;
if(process.env.NODE_ENV == "development"){
ENV = "http://bp-dev.ini.yidian-inc.com/"
}else if(process.env.NODE_ENV == "test"){
ENV = "http://bp-test.ini.yidian-inc.com/"
}else{
ENV = "http://bp.int.yidian-inc.com/"
}
return `${ENV}order/oldbackground/order_export?marketing_id=${eventId}&type=${type}`;
var ENV;
if (process.env.NODE_ENV == "development") {
ENV = "http://bp-dev.ini.yidian-inc.com/";
} else if (process.env.NODE_ENV == "test") {
ENV = "http://bp-test.ini.yidian-inc.com/";
} else {
ENV = "http://bp.int.yidian-inc.com/";
}
return `${ENV}order/oldbackground/order_export?marketing_id=${eventId}&type=${type}`;
}
// 新订单管理
// 获取订单列表
export async function newGetOrderList(params) {
const res = await axios.get("/api/v1/order/background/order_list", {
params
});
return res;
const res = await axios.get("/api/v1/order/background/order_list", {
params,
});
return res;
}
// 获取活动名称
export async function newGetMarketingList() {
const res = await axios.get(
"/api/v1/order/background/order_condition_marketing_list"
);
return res;
const res = await axios.get("/api/v1/order/background/order_condition_marketing_list");
return res;
}
// 获取商品名称
export async function newGetGoodsList(params) {
const res = await axios.get(
"/api/v1/order/background/order_condition_goods_list",
{
params
}
);
return res;
const res = await axios.get("/api/v1/order/background/order_condition_goods_list", {
params,
});
return res;
}
// 获取自提点
export async function newGetSubShopList(params) {
const res = await axios.get(
"/api/v1/order/background/order_condition_take_place_list",
{
params
}
);
return res;
const res = await axios.get("/api/v1/order/background/order_condition_take_place_list", {
params,
});
return res;
}
// 打印订单
export async function newOrderPrint(params) {
const res = await axios.get("/api/v1/order/background/order_print", {
params,
timeout: 30000
});
return res;
const res = await axios.get("/api/v1/order/background/order_print", {
params,
timeout: 30000,
});
return res;
}
// 订单退款列表
export async function newOrderItemList(params) {
const res = await axios.get("/api/v1/order/background/order_item_list", {
params
});
return res;
const res = await axios.get("/api/v1/order/background/order_item_list", {
params,
});
return res;
}
// 订单退款
export async function newRefundOrder(orderId, itemsToRefund) {
const res = await axios.post("/api/v1/order/background/order_refund", {
order_id: orderId,
refund_list: itemsToRefund
});
return res;
const res = await axios.post("/api/v1/order/background/order_refund", {
order_id: orderId,
refund_list: itemsToRefund,
});
return res;
}
// 订单驳回
export async function newOrderRefundReject(params) {
const res = await axios.get("/api/v1/order/background/order_refund_reject", {
params
});
return res;
const res = await axios.get("/api/v1/order/background/order_refund_reject", {
params,
});
return res;
}
// 导出订单
export function newGetOrderExportURL(eventId, type) {
var ENV;
if(process.env.NODE_ENV == "development"){
ENV = "http://bp-dev.ini.yidian-inc.com/"
}else if(process.env.NODE_ENV == "test"){
ENV = "http://bp-test.ini.yidian-inc.com/"
}else{
ENV = "http://bp.int.yidian-inc.com/"
}
return `${ENV}order/background/order_export?marketing_id=${eventId}&type=${type}`;
var ENV;
if (process.env.NODE_ENV == "development") {
ENV = "http://bp-dev.ini.yidian-inc.com/";
} else if (process.env.NODE_ENV == "test") {
ENV = "http://bp-test.ini.yidian-inc.com/";
} else {
ENV = "http://bp.int.yidian-inc.com/";
}
return `${ENV}order/background/order_export?marketing_id=${eventId}&type=${type}`;
}
const path = require("path");
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
const isProduction = process.env.NODE_ENV === 'production';
const isDev = process.env.NODE_ENV === "development";
const plugins = [];
let externalObj = {};
if(isProduction) {
externalObj = {
'element-plus': 'ElementPlus',
vue: "Vue",
"vue-router": "VueRouter",
vuex: "Vuex",
axios: "axios"
}
}
if (process.env.NODE_ENV === 'production') {
plugins.push(new UglifyJsPlugin({
uglifyOptions: {
warnings: false
const IS_PROD = process.env.NODE_ENV === "production";
// CDN 链接配置
const CDN = {
externals: {
"element-plus": "ElementPlus",
vue: "Vue",
"vue-router": "VueRouter",
vuex: "Vuex",
axios: "axios",
},
build: {
css: ["https://unpkg.com/element-plus/lib/theme-chalk/index.css"],
js: [
"https://cdn.bootcdn.net/ajax/libs/vue/3.0.11/vue.global.js",
"https://cdn.bootcdn.net/ajax/libs/vue-router/4.0.6/vue-router.global.js",
"https://cdn.bootcdn.net/ajax/libs/vuex/4.0.0/vuex.global.js",
"https://cdn.bootcdn.net/ajax/libs/axios/0.21.1/axios.js",
"https://cdn.bootcdn.net/ajax/libs/element-plus/1.0.2-beta.44/index.full.js",
"https://cdn.bootcdn.net/ajax/libs/element-plus/1.0.2-beta.44/umd/locale/zh-cn.js",
"https://unpkg.com/dayjs/locale/zh-cn.js",
],
},
sourceMap: false,
parallel: true,
}));
}
const cdn = {
// 开发环境
dev: {
css: [],
js: []
},
// 生产环境
build: {
css: [
"https://unpkg.com/element-plus/lib/theme-chalk/index.css"
],
js: [
'https://cdn.bootcdn.net/ajax/libs/vue/3.0.11/vue.global.js',
'https://cdn.bootcdn.net/ajax/libs/vue-router/4.0.6/vue-router.global.js',
'https://cdn.bootcdn.net/ajax/libs/vuex/4.0.0/vuex.global.js',
'https://cdn.bootcdn.net/ajax/libs/axios/0.21.1/axios.js',
'https://cdn.bootcdn.net/ajax/libs/element-plus/1.0.2-beta.44/index.full.js',
'https://cdn.bootcdn.net/ajax/libs/element-plus/1.0.2-beta.44/umd/locale/zh-cn.js',
'https://unpkg.com/dayjs/locale/zh-cn.js'
]
}
}
};
module.exports = {
outputDir: isDev ? "./dist" : path.resolve("./public/dist/"),
publicPath: isDev ? "/" : "/dist",
indexPath: './index.html',
lintOnSave: false,
configureWebpack: {
outputDir: !IS_PROD ? "./dist" : path.resolve("./public/dist/"),
publicPath: !IS_PROD ? "/" : "/dist",
lintOnSave: !IS_PROD,
productionSourceMap: false, // 去掉生成环境的 sourceMap
devServer: {
proxy: "http://127.0.0.1:8055", //http://localhost:8055
hot: true,
disableHostCheck: true,
proxy: "http://127.0.0.1:8055", //http://localhost:8055
hot: true,
disableHostCheck: true,
},
resolve: {
// 配置解析规则
alias: {
'@': path.join(__dirname, 'src') // 使用@别名简写src目录所在的绝对路径
},
configureWebpack: config => {
if (IS_PROD) {
config.externals = CDN.externals;
}
//打包文件大小配置
config["performance"] = {
maxEntrypointSize: 10000000,
maxAssetSize: 30000000,
};
},
externals: externalObj,
plugins,
},
chainWebpack: config => {
// 默认不开启 prefetch
config.plugins.delete("prefetch");
chainWebpack: config => {
// 默认不开启 prefetch
config.plugins.delete("prefetch");
// 默认不开启 preload
config.plugins.delete("preload");
// 默认不开启 preload
config.plugins.delete("preload");
// 修改页面 title
config.plugin("html").tap(args => {
args[0].title = "运营管理系统";
if (isProduction) {
args[0].cdn = cdn.build
}
// if (!isProduction) {
// args[0].cdn = cdn.dev
// }
return args;
});
},
productionSourceMap: false,
// 别名 alias
config.resolve.alias.set("@", path.resolve("src"));
// 修改页面 title
config.plugin("html").tap(args => {
args[0].title = "运营管理系统";
if (IS_PROD) {
args[0].cdn = CDN.build;
}
return args;
});
// 分包
config.when(IS_PROD, config => {
config.optimization.splitChunks({
chunks: "all",
cacheGroups: {
libs: {
name: "chunk-libs",
test: /[\\/]node_modules[\\/]/,
priority: 10,
chunks: "initial", // 只打包初始时依赖的第三方
},
elementPlus: {
name: "chunk-elementPlus", // 单独将 elementPlus 拆包
priority: 20, // 数字大权重到,满足多个 cacheGroups 的条件时候分到权重高的
test: /[\\/]node_modules[\\/]_?element-plus(.*)/,
},
commons: {
name: "chunk-commons",
test: path.resolve("src/components"),
minChunks: 3, // 被至少用三次以上打包分离
priority: 5, // 优先级
reuseExistingChunk: true, // 表示是否使用已有的 chunk,如果为 true 则表示如果当前的 chunk 包含的模块已经被抽取出去了,那么将不会重新生成新的。
},
},
});
});
config.optimization.runtimeChunk("single");
},
};
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment