diff --git a/manager/.npmrc b/manager/.npmrc
new file mode 100644
index 00000000..c0c80ba4
--- /dev/null
+++ b/manager/.npmrc
@@ -0,0 +1 @@
+engine-strict=false
diff --git a/manager/.yarnrc b/manager/.yarnrc
new file mode 100644
index 00000000..4f14322d
--- /dev/null
+++ b/manager/.yarnrc
@@ -0,0 +1 @@
+--ignore-engines true
diff --git a/manager/README.md b/manager/README.md
index 254a51de..f3916b65 100644
--- a/manager/README.md
+++ b/manager/README.md
@@ -1,29 +1,90 @@
# LILISHOP-UI
-## Project setup
-```
-npm install
-```
+# LiliShop UI Manager 的 Node.js 版本兼容性
-### Compiles and hot-reloads for development
-```
-npm run serve
-```
+本文档概述了 LiliShop UI seller 项目的 Node.js 版本兼容性。
-### Compiles and minifies for production
-```
-npm run build
-```
+## 摘要
-### Run your tests
-```
-npm run test
-```
+| Node.js 版本 | npm 版本 | 兼容性 | 备注 |
+|-----------------|-------------|--------------|-------|
+| v20.13.1 (当前 LTS) | 10.8.0 | ✅ 需要解决方案 | 安装需要 `--legacy-peer-deps` 参数,运行需要 `NODE_OPTIONS=--openssl-legacy-provider` |
+| v18.20.8 (LTS) | 10.8.2 | ✅ 需要解决方案 | 安装需要 `--legacy-peer-deps` 参数,运行需要 `NODE_OPTIONS=--openssl-legacy-provider` |
+| v16.20.2 (LTS) | 8.19.4 | ✅ 有轻微警告 | 安装需要 `--legacy-peer-deps` 参数,整体运行良好 |
+| v14.x (最低版本) | - | ❌ 不兼容 | 无法在 ARM64 架构上安装 (M系列 Mac) |
+
+## 详细发现
+
+### Node.js v20.13.1 (当前 LTS)
+- **安装**: 使用 `--legacy-peer-deps` 参数可以正常安装
+- **开发服务器**: 需要设置 `NODE_OPTIONS=--openssl-legacy-provider` 环境变量
+- **构建**: 需要设置 `NODE_OPTIONS=--openssl-legacy-provider` 环境变量
+- **问题**:
+ - vue-awesome-swiper 和 swiper 之间的依赖冲突
+ - 由于 Node.js v20 移除了旧版加密算法导致的 OpenSSL 相关错误
+ - 部分包报告不支持的引擎警告
+- **验证**: 已成功构建并验证 dist/index.html 可以正常运行
+
+### Node.js v18.20.8 (LTS)
+- **安装**: 使用 `--legacy-peer-deps` 参数可以正常安装
+- **开发服务器**: 需要设置 `NODE_OPTIONS=--openssl-legacy-provider` 环境变量
+- **构建**: 需要设置 `NODE_OPTIONS=--openssl-legacy-provider` 环境变量
+- **问题**:
+ - 部分包报告不支持的引擎警告 (v-click-outside-x, @achrinza/node-ipc)
+- **验证**: 已成功构建并验证 dist/index.html 可以正常运行
+
+### Node.js v16.20.2 (LTS)
+- **安装**: 使用 `--legacy-peer-deps` 参数可以正常安装
+- **开发服务器**: 无需额外参数即可运行
+- **构建**: 可以正常构建
+- **问题**:
+ - v-click-outside-x 包有轻微警告 (需要 npm 6.4.1)
+
+### Node.js v14.x
+- **安装**: 在 ARM64 架构 (M系列 Mac) 上无法安装
+- **开发服务器**: 未测试
+- **构建**: 可以正常构建
+- **问题**:
+ - Node.js v14 没有 ARM64 架构的二进制文件
+
+## 建议
+
+1. **最佳版本**: Node.js v16.20.2 配合 npm 8.19.4
+ - 与项目依赖最兼容
+ - 需要的解决方案最少
+ - 性能稳定
+
+2. **安装命令**:
+ ```bash
+ npm install --legacy-peer-deps
+ ```
+
+3. **开发命令**:
+ ```bash
+ # 对于 Node.js v16
+ npm run dev
+
+ # 对于 Node.js v18 或 v20
+ NODE_OPTIONS=--openssl-legacy-provider npm run dev
+ 或者 npm run dev
+ ```
+
+4. **生产构建命令**:
+ ```bash
+ # 对于 Node.js v16
+ npm run build
+
+ # 对于 Node.js v18 或 v20
+ NODE_OPTIONS=--openssl-legacy-provider npm run build
+ 或者 npm run dev
+ ```
+
+## 未来考虑
+
+1. 更新依赖以兼容较新的 Node.js 版本
+2. 解决对等依赖冲突
+3. 更新 package.json 以指定推荐的 Node.js 版本范围
-### Lints and fixes files
-```
-npm run lint
-```
### Customize configuration
详情点击 [https://cli.vuejs.org/zn/config/](https://cli.vuejs.org/zn/config/).
diff --git a/manager/package.json b/manager/package.json
index 1253041d..c8a0ebe0 100644
--- a/manager/package.json
+++ b/manager/package.json
@@ -5,9 +5,12 @@
"description": "lilishop-ui",
"author": "lili-platform",
"scripts": {
- "serve": "vue-cli-service serve",
- "build": "vue-cli-service build",
- "dev": "vue-cli-service serve"
+ "serve": "NODE_OPTIONS=--openssl-legacy-provider vue-cli-service serve",
+ "build": "NODE_OPTIONS=--openssl-legacy-provider vue-cli-service build",
+ "dev": "NODE_OPTIONS=--openssl-legacy-provider vue-cli-service serve"
+ },
+ "engines": {
+ "node": ">=14"
},
"dependencies": {
"@amap/amap-jsapi-loader": "0.0.7",
@@ -16,8 +19,9 @@
"core-js": "^3.6.5",
"dplayer": "^1.26.0",
"js-cookie": "^2.2.1",
- "node-sass": "^4.14.1",
- "sass-loader": "^8.0.2",
+ "price-color": "1.0.2",
+ "sass": "^1.63.6",
+ "sass-loader": "^10.4.1",
"sockjs-client": "^1.4.0",
"swiper": "^6.3.5",
"uuid": "^8.3.2",
@@ -31,8 +35,7 @@
"vue-router": "^3.1.3",
"vuedraggable": "^2.23.2",
"vuex": "^3.4.0",
- "xss": "^1.0.7",
- "price-color":"1.0.2"
+ "xss": "^1.0.7"
},
"devDependencies": {
"@vue/cli-plugin-babel": "^4.4.4",
@@ -50,6 +53,8 @@
"vue-template-compiler": "^2.6.10"
},
"resolutions": {
- "minimatch": "^3.1.2"
+ "minimatch": "^3.1.2",
+ "node-sass": "npm:sass@^1.63.6",
+ "@achrinza/node-ipc": "9.2.2"
}
}
diff --git a/manager/src/components/hotzone/index.vue b/manager/src/components/hotzone/index.vue
index 90d75467..53c0c7e7 100644
--- a/manager/src/components/hotzone/index.vue
+++ b/manager/src/components/hotzone/index.vue
@@ -57,11 +57,11 @@ export default {
};
diff --git a/manager/src/views/main-parts/shrinkable-menu/shrinkable-menu.vue b/manager/src/views/main-parts/shrinkable-menu/shrinkable-menu.vue
index 909f70ca..89e77c2f 100644
--- a/manager/src/views/main-parts/shrinkable-menu/shrinkable-menu.vue
+++ b/manager/src/views/main-parts/shrinkable-menu/shrinkable-menu.vue
@@ -49,7 +49,7 @@ export default {
this.selectNav(val.meta.firstRouterName)
}
}
- }
+ }
},
methods: {
changeMenu(name) { //二级路由点击
@@ -90,7 +90,7 @@ export default {
.ivu-menu-dark.ivu-menu-vertical .ivu-menu-item-active:not(.ivu-menu-submenu), .ivu-menu-dark.ivu-menu-vertical .ivu-menu-submenu-title-active:not(.ivu-menu-submenu){
color: $theme_color;
}
-/deep/.ivu-menu-vertical .ivu-menu-item-group-title {
+::v-deep.ivu-menu-vertical .ivu-menu-item-group-title {
height: 40px;
line-height: 40px;
padding-left: 20px;
diff --git a/manager/src/views/member/list/index.vue b/manager/src/views/member/list/index.vue
index a4d0ad28..ca5f0ac4 100644
--- a/manager/src/views/member/list/index.vue
+++ b/manager/src/views/member/list/index.vue
@@ -6,7 +6,7 @@
-
+
@@ -546,10 +546,10 @@ export default {
};
diff --git a/manager/src/views/seller/shop/shopOperation.vue b/manager/src/views/seller/shop/shopOperation.vue
index aa698360..4c7426fb 100644
--- a/manager/src/views/seller/shop/shopOperation.vue
+++ b/manager/src/views/seller/shop/shopOperation.vue
@@ -862,7 +862,7 @@ export default {
z-index: 9;
}
-/deep/ .ivu-tabs-bar {
+::v-deep .ivu-tabs-bar {
margin: 0;
}
diff --git a/manager/src/views/statistics/order.vue b/manager/src/views/statistics/order.vue
index c8a24df8..cf6fb228 100644
--- a/manager/src/views/statistics/order.vue
+++ b/manager/src/views/statistics/order.vue
@@ -782,7 +782,7 @@ export default {
z-index: 2;
}
}
- /deep/ .box {
+ ::v-deep .box {
color: #fff;
position: absolute;
diff --git a/manager/src/views/sys/setting-manage/authLogin/CONNECT_SETTING.vue b/manager/src/views/sys/setting-manage/authLogin/CONNECT_SETTING.vue
index 5ae65111..eb143e9a 100644
--- a/manager/src/views/sys/setting-manage/authLogin/CONNECT_SETTING.vue
+++ b/manager/src/views/sys/setting-manage/authLogin/CONNECT_SETTING.vue
@@ -123,7 +123,7 @@ export default {
margin-right: 10px;
display: flex;
margin-bottom: 20px;
- /deep/ .ivu-card-body {
+ ::v-deep .ivu-card-body {
padding: 0 16px !important;
}
}
diff --git a/manager/src/views/sys/setting-manage/authLogin/QQ_CONNECT.vue b/manager/src/views/sys/setting-manage/authLogin/QQ_CONNECT.vue
index 09115ab2..234584c8 100644
--- a/manager/src/views/sys/setting-manage/authLogin/QQ_CONNECT.vue
+++ b/manager/src/views/sys/setting-manage/authLogin/QQ_CONNECT.vue
@@ -133,7 +133,7 @@ export default {
margin-right: 20px;
display: flex;
margin-bottom: 20px;
- /deep/ .ivu-card-body {
+ ::v-deep .ivu-card-body {
padding: 0 16px !important;
}
}
@@ -151,7 +151,7 @@ export default {
padding-bottom: 10px;
flex-direction: column;
align-items: center;
- /deep/ .ivu-btn {
+ ::v-deep .ivu-btn {
width: 100px;
}
}
diff --git a/manager/src/views/sys/setting-manage/authLogin/WECHAT_CONNECT.vue b/manager/src/views/sys/setting-manage/authLogin/WECHAT_CONNECT.vue
index f952bffb..c3be6738 100644
--- a/manager/src/views/sys/setting-manage/authLogin/WECHAT_CONNECT.vue
+++ b/manager/src/views/sys/setting-manage/authLogin/WECHAT_CONNECT.vue
@@ -132,7 +132,7 @@ export default {
margin-right: 20px;
display: flex;
margin-bottom: 20px;
- /deep/ .ivu-card-body {
+ ::v-deep .ivu-card-body {
padding: 0 16px !important;
}
}
@@ -150,7 +150,7 @@ export default {
padding-bottom: 10px;
flex-direction: column;
align-items: center;
- /deep/ .ivu-btn {
+ ::v-deep .ivu-btn {
width: 100px;
}
}
diff --git a/manager/src/views/sys/setting-manage/pay/ALIPAY_PAYMENT.vue b/manager/src/views/sys/setting-manage/pay/ALIPAY_PAYMENT.vue
index 1b9c5b6a..d882f6d6 100644
--- a/manager/src/views/sys/setting-manage/pay/ALIPAY_PAYMENT.vue
+++ b/manager/src/views/sys/setting-manage/pay/ALIPAY_PAYMENT.vue
@@ -90,12 +90,12 @@ export default {
display: flex;
}
.w200 {
- /deep/ .ivu-input {
+ ::v-deep .ivu-input {
width: 250px !important;
margin: 0 10px;
}
}
-/deep/ .ivu-input {
+::v-deep .ivu-input {
width: 450px !important;
margin: 0 10px;
}
diff --git a/manager/src/views/sys/setting-manage/pay/PAYMENT_SUPPORT.vue b/manager/src/views/sys/setting-manage/pay/PAYMENT_SUPPORT.vue
index 31e8bc3f..f2975208 100644
--- a/manager/src/views/sys/setting-manage/pay/PAYMENT_SUPPORT.vue
+++ b/manager/src/views/sys/setting-manage/pay/PAYMENT_SUPPORT.vue
@@ -151,7 +151,7 @@ export default {
margin-right: 20px;
display: flex;
margin-bottom: 20px;
- /deep/ .ivu-card-body {
+ ::v-deep .ivu-card-body {
padding: 0 16px !important;
}
}
diff --git a/manager/src/views/sys/setting-manage/pay/WECHAT_PAYMENT.vue b/manager/src/views/sys/setting-manage/pay/WECHAT_PAYMENT.vue
index 392db0cf..49359073 100644
--- a/manager/src/views/sys/setting-manage/pay/WECHAT_PAYMENT.vue
+++ b/manager/src/views/sys/setting-manage/pay/WECHAT_PAYMENT.vue
@@ -118,13 +118,13 @@ export default {
}
.w200 {
- /deep/ .ivu-input {
+ ::v-deep .ivu-input {
width: 250px !important;
margin: 0 10px;
}
}
-/deep/ .ivu-input {
+::v-deep .ivu-input {
width: 450px !important;
margin: 0 10px;
}
diff --git a/manager/src/views/sys/setting-manage/setting/GOODS_SETTING.vue b/manager/src/views/sys/setting-manage/setting/GOODS_SETTING.vue
index d2a5ea9f..c38a83a5 100644
--- a/manager/src/views/sys/setting-manage/setting/GOODS_SETTING.vue
+++ b/manager/src/views/sys/setting-manage/setting/GOODS_SETTING.vue
@@ -188,7 +188,7 @@ export default {
.label-item {
display: flex;
}
-/deep/ .ivu-input {
+::v-deep .ivu-input {
width: 100px !important;
}
diff --git a/manager/src/views/sys/setting-manage/setting/IM_SETTING.vue b/manager/src/views/sys/setting-manage/setting/IM_SETTING.vue
index 7bfc80eb..dba17c86 100644
--- a/manager/src/views/sys/setting-manage/setting/IM_SETTING.vue
+++ b/manager/src/views/sys/setting-manage/setting/IM_SETTING.vue
@@ -74,7 +74,7 @@ export default {
display: flex;
}
-/deep/ .ivu-input {
+::v-deep .ivu-input {
width: 300px !important;
margin: 0 10px;
}
diff --git a/manager/src/views/sys/setting-manage/setting/LOGISTICS_SETTING.vue b/manager/src/views/sys/setting-manage/setting/LOGISTICS_SETTING.vue
index d49b322e..40dea111 100644
--- a/manager/src/views/sys/setting-manage/setting/LOGISTICS_SETTING.vue
+++ b/manager/src/views/sys/setting-manage/setting/LOGISTICS_SETTING.vue
@@ -113,7 +113,7 @@ export default {
display: flex;
}
-/deep/ .ivu-input {
+::v-deep .ivu-input {
width: 300px !important;
margin: 0 10px;
}
diff --git a/manager/src/views/sys/setting-manage/setting/ORDER_SETTING.vue b/manager/src/views/sys/setting-manage/setting/ORDER_SETTING.vue
index ecb7b314..20ab670a 100644
--- a/manager/src/views/sys/setting-manage/setting/ORDER_SETTING.vue
+++ b/manager/src/views/sys/setting-manage/setting/ORDER_SETTING.vue
@@ -124,7 +124,7 @@ export default {
margin-right: 10px;
}
-/deep/ .ivu-input {
+::v-deep .ivu-input {
width: 100px !important;
}
diff --git a/manager/src/views/sys/setting-manage/setting/OSS_SETTING.vue b/manager/src/views/sys/setting-manage/setting/OSS_SETTING.vue
index e5bbceda..b3a102c2 100644
--- a/manager/src/views/sys/setting-manage/setting/OSS_SETTING.vue
+++ b/manager/src/views/sys/setting-manage/setting/OSS_SETTING.vue
@@ -161,7 +161,7 @@ export default {
display: flex;
}
-/deep/ .ivu-input {
+::v-deep .ivu-input {
width: 300px !important;
margin: 0 10px;
}
diff --git a/manager/src/views/sys/setting-manage/setting/POINT_SETTING.vue b/manager/src/views/sys/setting-manage/setting/POINT_SETTING.vue
index ef75c793..e2e42c5d 100644
--- a/manager/src/views/sys/setting-manage/setting/POINT_SETTING.vue
+++ b/manager/src/views/sys/setting-manage/setting/POINT_SETTING.vue
@@ -172,7 +172,7 @@ export default {
}
}
-/deep/ .ivu-input {
+::v-deep .ivu-input {
width: 70px !important;
}
@@ -182,7 +182,7 @@ export default {
}
.label-btns {
- /deep/ .ivu-btn {
+ ::v-deep .ivu-btn {
margin-right: 10px;
}
}
diff --git a/manager/src/views/sys/setting-manage/setting/SMS_SETTING.vue b/manager/src/views/sys/setting-manage/setting/SMS_SETTING.vue
index e78d85ed..b40099c4 100644
--- a/manager/src/views/sys/setting-manage/setting/SMS_SETTING.vue
+++ b/manager/src/views/sys/setting-manage/setting/SMS_SETTING.vue
@@ -160,7 +160,7 @@ export default {
display: flex;
}
-/deep/ .ivu-input {
+::v-deep .ivu-input {
width: 300px !important;
margin: 0 10px;
}
diff --git a/manager/src/views/sys/setting-manage/setting/WITHDRAWAL_SETTING.vue b/manager/src/views/sys/setting-manage/setting/WITHDRAWAL_SETTING.vue
index e5996cc9..e674292c 100644
--- a/manager/src/views/sys/setting-manage/setting/WITHDRAWAL_SETTING.vue
+++ b/manager/src/views/sys/setting-manage/setting/WITHDRAWAL_SETTING.vue
@@ -98,7 +98,7 @@ export default {