@zfqh/uniapp-x 0.0.0-stage → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +44 -0
- package/LICENSE +21 -0
- package/README.md +61 -3
- package/lib/apis/core.d.ts +18 -0
- package/lib/apis/core.js +19 -0
- package/lib/apis/index.d.ts +2 -0
- package/lib/apis/index.js +2 -0
- package/lib/apis/request.d.ts +4 -0
- package/lib/apis/request.js +57 -0
- package/lib/configs/api.d.ts +7 -0
- package/lib/configs/api.js +6 -0
- package/lib/configs/app.d.ts +20 -0
- package/lib/configs/app.js +18 -0
- package/lib/configs/cdn.d.ts +15 -0
- package/lib/configs/cdn.js +17 -0
- package/lib/configs/env.d.ts +37 -0
- package/lib/configs/env.js +71 -0
- package/lib/configs/index.d.ts +130 -0
- package/lib/configs/index.js +76 -0
- package/lib/configs/link.d.ts +11 -0
- package/lib/configs/link.js +3 -0
- package/lib/configs/log.d.ts +9 -0
- package/lib/configs/log.js +8 -0
- package/lib/configs/mp.d.ts +15 -0
- package/lib/configs/mp.js +9 -0
- package/lib/configs/navigate.d.ts +17 -0
- package/lib/configs/navigate.js +5 -0
- package/lib/configs/page.d.ts +18 -0
- package/lib/configs/page.js +14 -0
- package/lib/configs/path.d.ts +11 -0
- package/lib/configs/path.js +10 -0
- package/lib/configs/storage.d.ts +7 -0
- package/lib/configs/storage.js +6 -0
- package/lib/configs/tabbar.d.ts +7 -0
- package/lib/configs/tabbar.js +6 -0
- package/lib/configs/toast.d.ts +18 -0
- package/lib/configs/toast.js +29 -0
- package/lib/configs/updater.d.ts +15 -0
- package/lib/configs/updater.js +33 -0
- package/lib/configs/upload.d.ts +30 -0
- package/lib/configs/upload.js +19 -0
- package/lib/configs/ver.d.ts +8 -0
- package/lib/configs/ver.js +28 -0
- package/lib/configs/web.d.ts +5 -0
- package/lib/configs/web.js +2 -0
- package/lib/hooks/index.d.ts +11 -0
- package/lib/hooks/index.js +11 -0
- package/lib/hooks/useAppLifecycle.d.ts +8 -0
- package/lib/hooks/useAppLifecycle.js +87 -0
- package/lib/hooks/useBadge.d.ts +8 -0
- package/lib/hooks/useBadge.js +47 -0
- package/lib/hooks/useNeedLogin.d.ts +1 -0
- package/lib/hooks/useNeedLogin.js +27 -0
- package/lib/hooks/useOverlay.d.ts +1 -0
- package/lib/hooks/useOverlay.js +17 -0
- package/lib/hooks/usePageShow.d.ts +2 -0
- package/lib/hooks/usePageShow.js +16 -0
- package/lib/hooks/usePopup.d.ts +1 -0
- package/lib/hooks/usePopup.js +14 -0
- package/lib/hooks/useRedirect.d.ts +5 -0
- package/lib/hooks/useRedirect.js +92 -0
- package/lib/hooks/useReferrer.d.ts +1 -0
- package/lib/hooks/useReferrer.js +11 -0
- package/lib/hooks/useShare.d.ts +12 -0
- package/lib/hooks/useShare.js +49 -0
- package/lib/hooks/useVersion.d.ts +6 -0
- package/lib/hooks/useVersion.js +21 -0
- package/lib/hooks/useWebview.d.ts +14 -0
- package/lib/hooks/useWebview.js +294 -0
- package/lib/index.d.ts +27 -0
- package/lib/index.js +26 -0
- package/lib/stores/app.d.ts +51 -0
- package/lib/stores/app.js +57 -0
- package/lib/stores/dict.d.ts +35 -0
- package/lib/stores/dict.js +42 -0
- package/lib/stores/im.d.ts +57 -0
- package/lib/stores/im.js +102 -0
- package/lib/stores/index.d.ts +12 -0
- package/lib/stores/index.js +17 -0
- package/lib/stores/launch.d.ts +42 -0
- package/lib/stores/launch.js +39 -0
- package/lib/stores/location.d.ts +35 -0
- package/lib/stores/location.js +58 -0
- package/lib/stores/login.d.ts +80 -0
- package/lib/stores/login.js +91 -0
- package/lib/stores/network.d.ts +26 -0
- package/lib/stores/network.js +45 -0
- package/lib/stores/pinia.d.ts +2 -0
- package/lib/stores/pinia.js +3 -0
- package/lib/stores/system.d.ts +39 -0
- package/lib/stores/system.js +36 -0
- package/lib/styles/index.scss +9 -0
- package/lib/styles/reset-vue.scss +15 -0
- package/lib/utils/audio.d.ts +14 -0
- package/lib/utils/audio.js +43 -0
- package/lib/utils/consts.d.ts +74 -0
- package/lib/utils/consts.js +110 -0
- package/lib/utils/cos.d.ts +17 -0
- package/lib/utils/cos.js +141 -0
- package/lib/utils/file.d.ts +28 -0
- package/lib/utils/file.js +292 -0
- package/lib/utils/index.d.ts +166 -0
- package/lib/utils/index.js +486 -0
- package/lib/utils/message.d.ts +1 -0
- package/lib/utils/message.js +55 -0
- package/lib/utils/navigate.d.ts +28 -0
- package/lib/utils/navigate.js +192 -0
- package/lib/utils/pages.d.ts +21 -0
- package/lib/utils/pages.js +83 -0
- package/lib/utils/permission.d.ts +17 -0
- package/lib/utils/permission.js +278 -0
- package/lib/utils/query.d.ts +20 -0
- package/lib/utils/query.js +51 -0
- package/lib/utils/request.d.ts +8 -0
- package/lib/utils/request.js +139 -0
- package/lib/utils/storage.d.ts +40 -0
- package/lib/utils/storage.js +128 -0
- package/lib/utils/subscribe.d.ts +7 -0
- package/lib/utils/subscribe.js +94 -0
- package/lib/utils/toast.d.ts +17 -0
- package/lib/utils/toast.js +66 -0
- package/lib/utils/uni.d.ts +1 -0
- package/lib/utils/uni.js +141 -0
- package/lib/utils/update.d.ts +41 -0
- package/lib/utils/update.js +322 -0
- package/lib/utils/url.d.ts +14 -0
- package/lib/utils/url.js +40 -0
- package/package.json +38 -4
- package/types/index.d.ts +78 -0
- package/types/virtual.d.ts +1 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Change Log
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
|
+
|
|
6
|
+
## [0.0.2](http://10.10.10.16/caoben/front-end-tools/compare/@zfqh/uniapp-x@0.0.1...@zfqh/uniapp-x@0.0.2) (2026-11-09)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @zfqh/uniapp-x
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## 0.0.1 (2026-11-09)
|
|
15
|
+
|
|
16
|
+
**Note:** Version bump only for package @zfqh/uniapp-x
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# Change Log
|
|
23
|
+
|
|
24
|
+
## Unreleased
|
|
25
|
+
|
|
26
|
+
- `cleanEnv` 新增 `combine` 选项(默认 `false`)。`combine: true` 时在构建期为 `src|lib/configs/env` 提供虚拟模块 `virtual:env`(不写文件),结构保持 glob 的 `{ 路径: { default: config } }`;生产裁剪仍然生效,无关环境在索引中为 `{ default: {} }` 且不 import;`.env.*` 变化时刷新虚拟模块;`defineConfig` 对用户已提供的 `cleanEnv` 不再重复追加。
|
|
27
|
+
- env 文件扩展名支持 `.js`、`.ts`、`.mjs`、`.mts`、`.uts`,`cleanEnv` 生产裁剪、`getEnvHash`、`configs/env.ts` 解析同步支持 `.uts`。
|
|
28
|
+
- **BREAKING**:env 模块移除 App 条件编译,恢复为 `const modules = import.meta.glob('@env/.env.*.*', { eager: true })`;App 工程需在 `@gmcb/vite` 中显式配置 `cleanEnv({ combine: true })`。
|
|
29
|
+
- 修复 App 蒸汽模式下的 CJS 依赖互操作:`qs`、`url-parse` 在 App Vapor 打包时无法以 ESM 方式解析,`useWebview` / `useRedirect` 改为使用包内 `utils/query.ts`(`parseQuery` / `stringifyQuery`)与新增 `utils/url.ts`(`SimpleUrl`),H5/MP 行为保持一致。
|
|
30
|
+
- `tsc` 构建后的 `lib` 需要配合 `pnpm copy:build` 复制 `src/styles/**` 等非 TS 资源(`var.module.scss`),否则 App 编译会报 `Could not resolve "../styles/var.module.scss"`。
|
|
31
|
+
- Pinia store id 统一为模块名(`app`、`dict`、`im`、`launch`、`location`、`login`、`network`、`system`),移除 `uniapp-x-` 前缀,与文件名、`TYPES.STORAGE` key 的命名保持一致。
|
|
32
|
+
- 移除 `docs/` 文档站点与 `.vitepress/`,删除 `docs:dev` / `docs:build` 脚本(暂时不维护);`package.json` 的 `files` 不再包含 `docs`。
|
|
33
|
+
|
|
34
|
+
## 0.0.0
|
|
35
|
+
|
|
36
|
+
- 从 `@zfqh/uniapp` fork 的 uni-app x 分支。
|
|
37
|
+
- **BREAKING**:移除 Vuex 兼容层(`uni.$store`、`this.$store`、`commit`、`dispatch`、`getters`、`rootState`、`useStore(name)` 等),状态管理统一为 Pinia setup store。插件安装时执行 `app.use(pinia)` 安装包内唯一实例;普通 TS 模块使用 `useXxxStore(pinia)`,不要创建第二个 Pinia。
|
|
38
|
+
- **BREAKING**:移除全部 mixin(app、badge、login、redirect、share、show、webview、model、deep、debounce),替换为组合式 hooks:`useAppLifecycle`、`useBadge` / `useAppBadge`、`useNeedLogin`、`useRedirect`、`useShare`、`usePageShow`、`useWebview`。`model` 改用原生 `v-model`,`deep` 改用 `:deep()` / `styleIsolation`,`debounce` 改用 `Debounce` 工具类。
|
|
39
|
+
- **BREAKING**:移除全部 `g-*` 公共组件,同步下线组件文档和 easycom 配置;业务侧改用 `@zfqh/uview-x` 的 `uv-*` 组件或业务自定义组件。
|
|
40
|
+
- 新增 8 个 Pinia setup store:`useAppStore`、`useDictStore`、`useImStore`、`useLaunchStore`、`useLocationStore`、`useLoginStore`、`useNetworkStore`、`useSystemStore`;状态统一放在 `info`(`useLaunchStore` 额外有 `key`),提供 `setXxxInfo` / `getXxxInfo` 等 action 与 `isLogin`、`isConnected` computed。
|
|
41
|
+
- 新增 hooks:`usePageShow`、`useBadge`、`useAppBadge`、`useAppLifecycle`、`useShare`、`useWebview`、`useRedirect`,与既有 `useNeedLogin`、`useOverlay`、`usePopup`、`useVersion`、`useI18n`、`useReferrer` 一并从根入口导出。
|
|
42
|
+
- COS 签名依赖由 `crypto-js` 替换为 `crypto-es`(ESM)。
|
|
43
|
+
- 环境文件默认在 H5 / 小程序通过 `import.meta.glob` 加载;App 端需配合 `@gmcb/vite` 的 `cleanEnv({ combine: true })` 使用虚拟 env 索引。
|
|
44
|
+
- 文档重构:导航与侧边栏移除组件、混入;样式文档迁移到「指南 / 样式」;新增「从 Vuex/mixin 迁移」页,API 侧边栏改为状态管理与 Hooks。
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 aniu
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,61 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
# @zfqh/uniapp-x
|
|
2
|
+
|
|
3
|
+
uni-app x 公共能力包,面向 Vue 3 项目提供统一配置、请求封装、导航、Toast、COS 上传、常用工具、Pinia setup stores 与组合式 hooks。
|
|
4
|
+
|
|
5
|
+
## 安装
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm i @zfqh/uniapp-x
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
适用于 uni-app x(App / H5 / 微信小程序)与经典 uni-app Vue3(nvue)工程,依赖 `@zfqh/uview-x`、Vue 3 与 Pinia;国际化(i18n)由 `@zfqh/uview-x` 提供。
|
|
12
|
+
|
|
13
|
+
## 快速开始
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
// main.ts
|
|
17
|
+
import { createSSRApp } from 'vue';
|
|
18
|
+
import uniapp from '@zfqh/uniapp-x';
|
|
19
|
+
import App from './App.uvue';
|
|
20
|
+
|
|
21
|
+
export function createApp() {
|
|
22
|
+
const app = createSSRApp(App);
|
|
23
|
+
|
|
24
|
+
// 内部执行 app.use(pinia),安装包内唯一 Pinia 实例
|
|
25
|
+
app.use(uniapp);
|
|
26
|
+
|
|
27
|
+
return { app };
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
`App.uvue` / `App.vue` 中接入 App 级生命周期:
|
|
32
|
+
|
|
33
|
+
```vue
|
|
34
|
+
<script setup lang="ts">
|
|
35
|
+
import { useAppLifecycle } from '@zfqh/uniapp-x';
|
|
36
|
+
|
|
37
|
+
const { handleLaunch, handleShow } = useAppLifecycle();
|
|
38
|
+
|
|
39
|
+
onLaunch((options) => handleLaunch(options));
|
|
40
|
+
onAppShow((options) => handleShow(options)); // 经典 uni-app 使用 onShow
|
|
41
|
+
</script>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
App 全局样式入口:
|
|
45
|
+
|
|
46
|
+
```scss
|
|
47
|
+
/* App.uvue / App.vue */
|
|
48
|
+
@import '@zfqh/uniapp-x/lib/styles/index.scss';
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## 能力
|
|
52
|
+
|
|
53
|
+
- 统一配置、请求封装、导航、Toast、COS 上传与常用工具。
|
|
54
|
+
- 8 个 Pinia setup store(状态统一在 `state` 字段)与组合式 hooks(`useAppLifecycle`、`useWebview` 等)。
|
|
55
|
+
- 环境配置与样式入口;国际化(i18n)由 `@zfqh/uview-x` 提供。
|
|
56
|
+
|
|
57
|
+
## 文档
|
|
58
|
+
|
|
59
|
+
- 开发约定、完整 API、平台差异与验证:[AGENTS.md](AGENTS.md)
|
|
60
|
+
- 示例工程:`examples/uniapp-vapor`(蒸汽模式)、`examples/uniapp-nvue`(经典 Vue3 nvue)
|
|
61
|
+
- 变更记录:[CHANGELOG.md](CHANGELOG.md)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** 发送短信验证码 */
|
|
2
|
+
export declare const sendSmsCode: (...args: any[]) => any;
|
|
3
|
+
/** 获取腾讯上传临时Token */
|
|
4
|
+
export declare const getTencentToken: (...args: any[]) => any;
|
|
5
|
+
/** 获取最新版本 */
|
|
6
|
+
export declare const getLastVersion: (...args: any[]) => any;
|
|
7
|
+
/** 获取cos签名后的地址 */
|
|
8
|
+
export declare const getCosUrls: (...args: any[]) => any;
|
|
9
|
+
/** 刷新token */
|
|
10
|
+
export declare const postRefreshToken: (...args: any[]) => any;
|
|
11
|
+
/** 获取字典数据 */
|
|
12
|
+
export declare const getDictData: (...args: any[]) => any;
|
|
13
|
+
/** 获取 IM 配置(IM userSig、SDKAppID 等) */
|
|
14
|
+
export declare const getImData: (...args: any[]) => any;
|
|
15
|
+
/** 获取应用详情 */
|
|
16
|
+
export declare const getAppData: (...args: any[]) => any;
|
|
17
|
+
/** 获取用户应用详情 */
|
|
18
|
+
export declare const getAppByUser: (...args: any[]) => any;
|
package/lib/apis/core.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { GET, POST } from './request';
|
|
2
|
+
/** 发送短信验证码 */
|
|
3
|
+
export const sendSmsCode = (...args) => POST('/admin-api/system/auth/send-checkCode', ...args);
|
|
4
|
+
/** 获取腾讯上传临时Token */
|
|
5
|
+
export const getTencentToken = (...args) => GET('/app-api/infra/file/getTencentToken', ...args);
|
|
6
|
+
/** 获取最新版本 */
|
|
7
|
+
export const getLastVersion = (...args) => POST('/app-api/system/app/version/get-last-version-v2', ...args);
|
|
8
|
+
/** 获取cos签名后的地址 */
|
|
9
|
+
export const getCosUrls = (...args) => POST('/app-api/infra/cos/getUrls', ...args);
|
|
10
|
+
/** 刷新token */
|
|
11
|
+
export const postRefreshToken = (...args) => POST('/app-api/robot/store/auth/refreshToken?refreshToken=:refreshToken', ...args);
|
|
12
|
+
/** 获取字典数据 */
|
|
13
|
+
export const getDictData = (...args) => GET('/app-api/system/dict-data/type', ...args);
|
|
14
|
+
/** 获取 IM 配置(IM userSig、SDKAppID 等) */
|
|
15
|
+
export const getImData = (...args) => GET('/admin-api/system/im/buildApiConfig', ...args);
|
|
16
|
+
/** 获取应用详情 */
|
|
17
|
+
export const getAppData = (...args) => GET('/admin-api/robot/authority/queryAppDetail', ...args);
|
|
18
|
+
/** 获取用户应用详情 */
|
|
19
|
+
export const getAppByUser = (...args) => GET('/admin-api/robot/authority/queryUserAppDetail', ...args);
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import http from '@zfqh/uview-x/utils/http';
|
|
2
|
+
declare const GET: (url: string, data?: {}, options?: {}) => any, POST: (url: string, data?: {}, options?: {}) => any, PUT: (url: string, data?: {}, options?: {}) => any, DELETE: (url: string, data?: {}, options?: {}) => any;
|
|
3
|
+
export { GET, POST, PUT, DELETE };
|
|
4
|
+
export default http;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import api from '../configs/api';
|
|
2
|
+
import app from '../configs/app';
|
|
3
|
+
import { createRequest, createInterceptors } from '../utils/request';
|
|
4
|
+
import { LANGUAGE, SYSTEM_INFO } from '../utils/consts';
|
|
5
|
+
import { getLocale } from '@zfqh/uview-x';
|
|
6
|
+
import query from '../utils/query';
|
|
7
|
+
import http from '@zfqh/uview-x/utils/http';
|
|
8
|
+
import { pinia } from '../stores/pinia';
|
|
9
|
+
import { useLoginStore } from '../stores/login';
|
|
10
|
+
// uview-x 的 http 实例来自 @ts-nocheck 源码,这里补一次显式类型豁免
|
|
11
|
+
const request = http;
|
|
12
|
+
// 先注册通用拦截器,确保请求前已初始化登录 store(读取 accessToken / tenantId)
|
|
13
|
+
createInterceptors(request);
|
|
14
|
+
request.interceptors.request.use((conf) => {
|
|
15
|
+
const { tenantId } = useLoginStore(pinia).state || {};
|
|
16
|
+
let channel = query.channel || app.channel;
|
|
17
|
+
let terminal = 0;
|
|
18
|
+
// #ifdef MP-WEIXIN
|
|
19
|
+
terminal = 10;
|
|
20
|
+
// #endif
|
|
21
|
+
// #ifdef APP
|
|
22
|
+
if (SYSTEM_INFO.platform === 'android') {
|
|
23
|
+
terminal = 32;
|
|
24
|
+
}
|
|
25
|
+
else if (SYSTEM_INFO.platform === 'ios') {
|
|
26
|
+
terminal = 31;
|
|
27
|
+
}
|
|
28
|
+
// #endif
|
|
29
|
+
// #ifdef H5
|
|
30
|
+
terminal = 20;
|
|
31
|
+
if (query.platform === 'mp') {
|
|
32
|
+
terminal = 10;
|
|
33
|
+
}
|
|
34
|
+
else if (query.platform === 'app') {
|
|
35
|
+
if (SYSTEM_INFO.platform === 'android') {
|
|
36
|
+
terminal = 32;
|
|
37
|
+
}
|
|
38
|
+
else if (SYSTEM_INFO.platform === 'ios') {
|
|
39
|
+
terminal = 31;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// #endif
|
|
43
|
+
const header = {
|
|
44
|
+
'X-Language': query.xLanguage || LANGUAGE[query.locale || getLocale()],
|
|
45
|
+
'Tenant-Id': tenantId || 1,
|
|
46
|
+
channel,
|
|
47
|
+
terminal,
|
|
48
|
+
};
|
|
49
|
+
conf.header = {
|
|
50
|
+
...header,
|
|
51
|
+
...conf.header,
|
|
52
|
+
};
|
|
53
|
+
return conf;
|
|
54
|
+
});
|
|
55
|
+
const { GET, POST, PUT, DELETE } = createRequest(request, () => ({ baseURL: api.baseUrl }));
|
|
56
|
+
export { GET, POST, PUT, DELETE };
|
|
57
|
+
export default http;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** 应用配置 */
|
|
2
|
+
declare const app: {
|
|
3
|
+
/** 应用标识 */
|
|
4
|
+
code: string;
|
|
5
|
+
/** 应用名称 */
|
|
6
|
+
name: string;
|
|
7
|
+
/** 应用主题色 */
|
|
8
|
+
primary: string;
|
|
9
|
+
/** APP应用ID */
|
|
10
|
+
appId: string;
|
|
11
|
+
/** 小程序应用ID */
|
|
12
|
+
weappId: string;
|
|
13
|
+
/** 小程序应用原始ID */
|
|
14
|
+
weappOrigId: string;
|
|
15
|
+
/** 应用渠道标识 */
|
|
16
|
+
channel: number | string;
|
|
17
|
+
};
|
|
18
|
+
type App = typeof app;
|
|
19
|
+
export type AppConfig = Partial<App>;
|
|
20
|
+
export default app;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** 应用配置 */
|
|
2
|
+
const app = {
|
|
3
|
+
/** 应用标识 */
|
|
4
|
+
code: '',
|
|
5
|
+
/** 应用名称 */
|
|
6
|
+
name: '',
|
|
7
|
+
/** 应用主题色 */
|
|
8
|
+
primary: '',
|
|
9
|
+
/** APP应用ID */
|
|
10
|
+
appId: '',
|
|
11
|
+
/** 小程序应用ID */
|
|
12
|
+
weappId: '',
|
|
13
|
+
/** 小程序应用原始ID */
|
|
14
|
+
weappOrigId: '',
|
|
15
|
+
/** 应用渠道标识 */
|
|
16
|
+
channel: 0,
|
|
17
|
+
};
|
|
18
|
+
export default app;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** CDN静态资源配置 */
|
|
2
|
+
declare const cdn: {
|
|
3
|
+
/** 静态资源路径 */
|
|
4
|
+
baseUrl: string;
|
|
5
|
+
/** 静态站点路径 */
|
|
6
|
+
staticUrl: string;
|
|
7
|
+
/** 阿里OSS静态资源路径 */
|
|
8
|
+
ossUrl: string;
|
|
9
|
+
/** 腾讯COS静态资源路径 */
|
|
10
|
+
cosUrl: string;
|
|
11
|
+
/** 是否启用COS全球加速 */
|
|
12
|
+
readonly isAccelerate: boolean;
|
|
13
|
+
};
|
|
14
|
+
export type CdnConfig = Partial<typeof cdn>;
|
|
15
|
+
export default cdn;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import query from '../utils/query';
|
|
2
|
+
/** CDN静态资源配置 */
|
|
3
|
+
const cdn = {
|
|
4
|
+
/** 静态资源路径 */
|
|
5
|
+
baseUrl: '',
|
|
6
|
+
/** 静态站点路径 */
|
|
7
|
+
staticUrl: '',
|
|
8
|
+
/** 阿里OSS静态资源路径 */
|
|
9
|
+
ossUrl: '',
|
|
10
|
+
/** 腾讯COS静态资源路径 */
|
|
11
|
+
cosUrl: '',
|
|
12
|
+
/** 是否启用COS全球加速 */
|
|
13
|
+
get isAccelerate() {
|
|
14
|
+
return query.accelerate == 1;
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
export default cdn;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { MpConfig } from './mp';
|
|
2
|
+
import { ApiConfig } from './api';
|
|
3
|
+
import { CdnConfig } from './cdn';
|
|
4
|
+
import { LogConfig } from './log';
|
|
5
|
+
import { VerConfig } from './ver';
|
|
6
|
+
import { WebConfig } from './web';
|
|
7
|
+
export type EnvConfig = {
|
|
8
|
+
/** 应用环境 */
|
|
9
|
+
name?: string;
|
|
10
|
+
};
|
|
11
|
+
export type DefineEnvConfig = {
|
|
12
|
+
/** 环境配置 */
|
|
13
|
+
env?: EnvConfig;
|
|
14
|
+
/** 接口配置 */
|
|
15
|
+
api?: ApiConfig;
|
|
16
|
+
/** CDN静态资源配置 */
|
|
17
|
+
cdn?: CdnConfig;
|
|
18
|
+
/** 日志配置 */
|
|
19
|
+
log?: LogConfig;
|
|
20
|
+
/** 小程序配置 */
|
|
21
|
+
mp?: MpConfig;
|
|
22
|
+
/** 版本配置 */
|
|
23
|
+
ver?: VerConfig;
|
|
24
|
+
/** Web资源配置 */
|
|
25
|
+
web?: WebConfig;
|
|
26
|
+
};
|
|
27
|
+
/** 环境配置 */
|
|
28
|
+
declare const env: {
|
|
29
|
+
/** 应用环境 */
|
|
30
|
+
name: string;
|
|
31
|
+
/** 应用环境,取自文件名称 */
|
|
32
|
+
key: string;
|
|
33
|
+
[key: string]: any;
|
|
34
|
+
};
|
|
35
|
+
export declare const envs: string[];
|
|
36
|
+
export declare function setEnv(e: string): void;
|
|
37
|
+
export default env;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import mp from './mp';
|
|
2
|
+
import api from './api';
|
|
3
|
+
import cdn from './cdn';
|
|
4
|
+
import log from './log';
|
|
5
|
+
import ver from './ver';
|
|
6
|
+
import web from './web';
|
|
7
|
+
const STORE_KEY = 'ENV_NAME';
|
|
8
|
+
/** 环境配置 */
|
|
9
|
+
const env = {
|
|
10
|
+
name: process.env.NODE_ENV === 'production' ? 'prod' : 'dev',
|
|
11
|
+
key: '',
|
|
12
|
+
// #ifndef MP
|
|
13
|
+
store: uni.getStorageSync(STORE_KEY),
|
|
14
|
+
// #endif
|
|
15
|
+
set(e) {
|
|
16
|
+
// #ifndef MP
|
|
17
|
+
uni.setStorageSync(STORE_KEY, e);
|
|
18
|
+
env.store = null;
|
|
19
|
+
// #endif
|
|
20
|
+
setEnv(e);
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
const modules = import.meta.glob(`@env/.env.*.*`, { eager: true });
|
|
24
|
+
const moduleKeys = Object.keys(modules);
|
|
25
|
+
export const envs = [];
|
|
26
|
+
for (const moduleKey of moduleKeys) {
|
|
27
|
+
const match = moduleKey.match(/\.env\.(\w+)\.(m?js|m?ts|uts)$/i);
|
|
28
|
+
if (match) {
|
|
29
|
+
const key = match[1];
|
|
30
|
+
envs.push(key);
|
|
31
|
+
if (key !== 'local' && modules[moduleKey]['default']) {
|
|
32
|
+
if (!modules[moduleKey]['default'].env) {
|
|
33
|
+
modules[moduleKey]['default'].env = {};
|
|
34
|
+
}
|
|
35
|
+
const { name } = modules[moduleKey]['default'].env;
|
|
36
|
+
Object.assign(modules[moduleKey]['default'].env, { name: name || key, key });
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
const config = {
|
|
41
|
+
env,
|
|
42
|
+
api,
|
|
43
|
+
cdn,
|
|
44
|
+
log,
|
|
45
|
+
mp,
|
|
46
|
+
ver,
|
|
47
|
+
web,
|
|
48
|
+
};
|
|
49
|
+
function getEnvConfig(e) {
|
|
50
|
+
const keys = Object.keys(modules);
|
|
51
|
+
for (const key of keys) {
|
|
52
|
+
if (new RegExp(`${e}\\.(m?js|m?ts|uts)$`, 'i').test(key)) {
|
|
53
|
+
return modules[key]['default'];
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
export function setEnv(e) {
|
|
59
|
+
// #ifndef MP
|
|
60
|
+
if (env.store) {
|
|
61
|
+
e = env.store;
|
|
62
|
+
}
|
|
63
|
+
// #endif
|
|
64
|
+
const envConfig = getEnvConfig(e);
|
|
65
|
+
if (envConfig != null) {
|
|
66
|
+
Object.keys(envConfig).forEach((key) => {
|
|
67
|
+
Object.assign(config[key], envConfig[key]);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
export default env;
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { CdnConfig } from './cdn';
|
|
2
|
+
import { VerConfig } from './ver';
|
|
3
|
+
import { AppConfig } from './app';
|
|
4
|
+
import { TabbarConfig } from './tabbar';
|
|
5
|
+
import { PathConfig } from './path';
|
|
6
|
+
import { PageConfig } from './page';
|
|
7
|
+
import { LinkConfig } from './link';
|
|
8
|
+
import { UploadConfig } from './upload';
|
|
9
|
+
import { UpdaterConfig } from './updater';
|
|
10
|
+
import { NavigateConfig } from './navigate';
|
|
11
|
+
import { ToastConfig } from './toast';
|
|
12
|
+
import { DefineEnvConfig } from './env';
|
|
13
|
+
import { StorageConfig } from './storage';
|
|
14
|
+
export interface DefineBaseConfig {
|
|
15
|
+
/** 应用配置 */
|
|
16
|
+
app?: AppConfig;
|
|
17
|
+
/** tabbar配置 */
|
|
18
|
+
tabbar?: TabbarConfig;
|
|
19
|
+
/** 页面别名配置 */
|
|
20
|
+
path?: PathConfig;
|
|
21
|
+
/** 链接配置 */
|
|
22
|
+
link?: LinkConfig;
|
|
23
|
+
/** 页面配置 */
|
|
24
|
+
page?: PageConfig;
|
|
25
|
+
/** 导航配置 */
|
|
26
|
+
navigate?: NavigateConfig;
|
|
27
|
+
/** 上传配置 */
|
|
28
|
+
upload?: UploadConfig;
|
|
29
|
+
/** 更新配置 */
|
|
30
|
+
updater?: UpdaterConfig;
|
|
31
|
+
/** 版本配置 */
|
|
32
|
+
ver?: VerConfig;
|
|
33
|
+
/** CDN配置 */
|
|
34
|
+
cdn?: CdnConfig;
|
|
35
|
+
/** toast配置 */
|
|
36
|
+
toast?: ToastConfig;
|
|
37
|
+
/** 存储配置 */
|
|
38
|
+
storage?: StorageConfig;
|
|
39
|
+
}
|
|
40
|
+
/** 全局配置 */
|
|
41
|
+
declare const conf: {
|
|
42
|
+
/** 环境配置 */
|
|
43
|
+
env: {
|
|
44
|
+
[key: string]: any;
|
|
45
|
+
name: string;
|
|
46
|
+
key: string;
|
|
47
|
+
};
|
|
48
|
+
/** 接口配置 */
|
|
49
|
+
api: {
|
|
50
|
+
baseUrl: string;
|
|
51
|
+
};
|
|
52
|
+
/** CDN静态资源配置 */
|
|
53
|
+
cdn: {
|
|
54
|
+
baseUrl: string;
|
|
55
|
+
staticUrl: string;
|
|
56
|
+
ossUrl: string;
|
|
57
|
+
cosUrl: string;
|
|
58
|
+
readonly isAccelerate: boolean;
|
|
59
|
+
};
|
|
60
|
+
/** 日志配置 */
|
|
61
|
+
log: {
|
|
62
|
+
request: boolean;
|
|
63
|
+
response: boolean;
|
|
64
|
+
};
|
|
65
|
+
/** 小程序配置 */
|
|
66
|
+
mp: {
|
|
67
|
+
envVersion: "release" | "develop" | "trial";
|
|
68
|
+
envType: number;
|
|
69
|
+
};
|
|
70
|
+
/** 应用配置 */
|
|
71
|
+
app: {
|
|
72
|
+
code: string;
|
|
73
|
+
name: string;
|
|
74
|
+
primary: string;
|
|
75
|
+
appId: string;
|
|
76
|
+
weappId: string;
|
|
77
|
+
weappOrigId: string;
|
|
78
|
+
channel: number | string;
|
|
79
|
+
};
|
|
80
|
+
/** tabbar配置 */
|
|
81
|
+
tabbar: {
|
|
82
|
+
badgeIndex: number;
|
|
83
|
+
};
|
|
84
|
+
/** 路径配置 */
|
|
85
|
+
path: {
|
|
86
|
+
index: string;
|
|
87
|
+
login: string;
|
|
88
|
+
webview: string;
|
|
89
|
+
};
|
|
90
|
+
/** 链接配置 */
|
|
91
|
+
link: LinkConfig;
|
|
92
|
+
/** 页面配置 */
|
|
93
|
+
page: {
|
|
94
|
+
pages: string[];
|
|
95
|
+
tabBarPages: string[];
|
|
96
|
+
nativePages: string[];
|
|
97
|
+
needLoginPages: string[];
|
|
98
|
+
notRedirectPages: string[];
|
|
99
|
+
};
|
|
100
|
+
/** 上传配置 */
|
|
101
|
+
upload: UploadConfig;
|
|
102
|
+
/** 更新配置 */
|
|
103
|
+
updater: UpdaterConfig;
|
|
104
|
+
/** 导航配置 */
|
|
105
|
+
navigate: {
|
|
106
|
+
loginType: import("./navigate").NavigateType;
|
|
107
|
+
referrerType: import("./navigate").ReferrerType;
|
|
108
|
+
};
|
|
109
|
+
/** 版本配置 */
|
|
110
|
+
ver: {
|
|
111
|
+
code: number;
|
|
112
|
+
name: string;
|
|
113
|
+
suffix: string;
|
|
114
|
+
};
|
|
115
|
+
/** toast配置 */
|
|
116
|
+
toast: {
|
|
117
|
+
custom: boolean;
|
|
118
|
+
show(options: UniNamespace.ShowToastOptions): boolean;
|
|
119
|
+
hide(): boolean;
|
|
120
|
+
};
|
|
121
|
+
/** Web资源配置 */
|
|
122
|
+
web: import("./web").WebConfig;
|
|
123
|
+
/** 存储配置 */
|
|
124
|
+
storage: {
|
|
125
|
+
prefix: string;
|
|
126
|
+
};
|
|
127
|
+
};
|
|
128
|
+
export declare function defineEnvConfig(config: DefineEnvConfig): DefineEnvConfig;
|
|
129
|
+
export declare function defineConfig(config: DefineBaseConfig): typeof conf;
|
|
130
|
+
export default conf;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { deepMerge } from '../utils';
|
|
2
|
+
import log from './log';
|
|
3
|
+
import mp from './mp';
|
|
4
|
+
import api from './api';
|
|
5
|
+
import cdn from './cdn';
|
|
6
|
+
import ver from './ver';
|
|
7
|
+
import app from './app';
|
|
8
|
+
import tabbar from './tabbar';
|
|
9
|
+
import path from './path';
|
|
10
|
+
import page from './page';
|
|
11
|
+
import link from './link';
|
|
12
|
+
import upload from './upload';
|
|
13
|
+
import updater from './updater';
|
|
14
|
+
import navigate from './navigate';
|
|
15
|
+
import toast from './toast';
|
|
16
|
+
import web from './web';
|
|
17
|
+
import env, { envs, setEnv } from './env';
|
|
18
|
+
import storage from './storage';
|
|
19
|
+
/** 全局配置 */
|
|
20
|
+
const conf = {
|
|
21
|
+
/** 环境配置 */
|
|
22
|
+
env,
|
|
23
|
+
/** 接口配置 */
|
|
24
|
+
api,
|
|
25
|
+
/** CDN静态资源配置 */
|
|
26
|
+
cdn,
|
|
27
|
+
/** 日志配置 */
|
|
28
|
+
log,
|
|
29
|
+
/** 小程序配置 */
|
|
30
|
+
mp,
|
|
31
|
+
/** 应用配置 */
|
|
32
|
+
app,
|
|
33
|
+
/** tabbar配置 */
|
|
34
|
+
tabbar,
|
|
35
|
+
/** 路径配置 */
|
|
36
|
+
path,
|
|
37
|
+
/** 链接配置 */
|
|
38
|
+
link,
|
|
39
|
+
/** 页面配置 */
|
|
40
|
+
page,
|
|
41
|
+
/** 上传配置 */
|
|
42
|
+
upload,
|
|
43
|
+
/** 更新配置 */
|
|
44
|
+
updater,
|
|
45
|
+
/** 导航配置 */
|
|
46
|
+
navigate,
|
|
47
|
+
/** 版本配置 */
|
|
48
|
+
ver,
|
|
49
|
+
/** toast配置 */
|
|
50
|
+
toast,
|
|
51
|
+
/** Web资源配置 */
|
|
52
|
+
web,
|
|
53
|
+
/** 存储配置 */
|
|
54
|
+
storage,
|
|
55
|
+
};
|
|
56
|
+
if (process.env.NODE_ENV === 'production') {
|
|
57
|
+
if (envs.includes(process.env.BUILD_ENV)) {
|
|
58
|
+
setEnv(process.env.BUILD_ENV);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
setEnv('prod');
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else if (envs.includes('local')) {
|
|
65
|
+
setEnv('local');
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
setEnv('dev');
|
|
69
|
+
}
|
|
70
|
+
export function defineEnvConfig(config) {
|
|
71
|
+
return config;
|
|
72
|
+
}
|
|
73
|
+
export function defineConfig(config) {
|
|
74
|
+
return deepMerge(conf, config);
|
|
75
|
+
}
|
|
76
|
+
export default conf;
|