@longzai-intelligence-taro/config 0.0.1 → 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/README.md +59 -12
- package/dist/base.config.d.ts +19 -0
- package/dist/base.config.d.ts.map +1 -0
- package/dist/base.config.js +85 -0
- package/dist/base.config.js.map +1 -0
- package/dist/define.config.d.ts +37 -0
- package/dist/define.config.d.ts.map +1 -0
- package/dist/define.config.js +66 -0
- package/dist/define.config.js.map +1 -0
- package/dist/index.d.ts +8 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -4
- package/dist/index.js.map +1 -1
- package/dist/presets.d.ts +16 -0
- package/dist/presets.d.ts.map +1 -0
- package/dist/presets.js +29 -0
- package/dist/presets.js.map +1 -0
- package/dist/version.utils.d.ts +17 -0
- package/dist/version.utils.d.ts.map +1 -0
- package/dist/version.utils.js +63 -0
- package/dist/version.utils.js.map +1 -0
- package/package.json +9 -7
package/README.md
CHANGED
|
@@ -1,28 +1,75 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Longzai Intelligence Taro Config
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Longzai Intelligence Taro 构建配置封装包,为各项目 miniprogram 提供对标生产形态的公共基础配置预设,消除 config 三件套的重复样板。
|
|
4
|
+
|
|
5
|
+
## 创建初衷
|
|
6
|
+
|
|
7
|
+
各项目 miniprogram 的 Taro 构建配置存在大量逐字节相同的样板(设计稿基准、技术栈、postcss、别名等),分散在各项目 config 目录难以维护。本包将这些组织级通用约定提取为预设,base 对标 ktv 生产形态(移除项目专属项后保留通用部分),消费方任何字段皆可覆盖,预设非锁定。
|
|
8
|
+
|
|
9
|
+
## 工作范围
|
|
10
|
+
|
|
11
|
+
提供 base 预设(`createBaseConfig`)、配置定义函数(`defineConfig`)、版本读取工具(`readAppVersion`)与环境预设(`devPreset`、`prodPreset`),覆盖 miniprogram 构建配置的组织级通用部分;项目专属配置(UI 库兼容、环境变量注入、缓存隔离等)由消费方覆盖。
|
|
12
|
+
|
|
13
|
+
## peerDependency
|
|
14
|
+
|
|
15
|
+
依赖 `@tarojs/cli@^4.0.0`,由消费方项目(miniprogram)安装。
|
|
4
16
|
|
|
5
17
|
## 用法
|
|
6
18
|
|
|
19
|
+
`defineConfig` 支持两种形态。
|
|
20
|
+
|
|
21
|
+
### 对象形态
|
|
22
|
+
|
|
23
|
+
自动注入 base 预设并深合并,消费方字段覆盖预设:
|
|
24
|
+
|
|
7
25
|
```ts
|
|
8
|
-
|
|
9
|
-
import { defineConfig, type UserConfigExport } from '@longzai-intelligence-taro/config';
|
|
26
|
+
import { defineConfig } from '@longzai-intelligence-taro/config';
|
|
10
27
|
|
|
11
|
-
export default defineConfig
|
|
12
|
-
|
|
13
|
-
return merge({}, base, process.env.NODE_ENV === 'development' ? devConfig : prodConfig);
|
|
28
|
+
export default defineConfig({
|
|
29
|
+
projectName: 'longzai-intelligence-foo-miniprogram',
|
|
14
30
|
});
|
|
15
31
|
```
|
|
16
32
|
|
|
33
|
+
### 回调形态
|
|
34
|
+
|
|
35
|
+
透传 `@tarojs/cli` 原生 defineConfig,消费方在回调内自由组装动态逻辑(版本注入、环境变量、缓存隔离等):
|
|
36
|
+
|
|
17
37
|
```ts
|
|
18
|
-
|
|
19
|
-
import { defineConfig } from '@longzai-intelligence-taro/config';
|
|
38
|
+
import { createBaseConfig, defineConfig } from '@longzai-intelligence-taro/config';
|
|
20
39
|
|
|
21
40
|
export default defineConfig(async (merge) => {
|
|
22
|
-
return merge({},
|
|
41
|
+
return merge({}, createBaseConfig(), {
|
|
42
|
+
projectName: 'longzai-intelligence-foo-miniprogram',
|
|
43
|
+
compiler: { type: 'webpack5', prebundle: { exclude: ['some-ui-lib'] } },
|
|
44
|
+
});
|
|
23
45
|
});
|
|
24
46
|
```
|
|
25
47
|
|
|
26
|
-
##
|
|
48
|
+
## 导出 API
|
|
27
49
|
|
|
28
|
-
|
|
50
|
+
### `defineConfig(config)`
|
|
51
|
+
|
|
52
|
+
支持对象(自动注入 base 预设深合并)与回调(透传原生)两种形态。
|
|
53
|
+
|
|
54
|
+
### `createBaseConfig()`
|
|
55
|
+
|
|
56
|
+
对标 ktv 生产形态的 base 预设,包含以下组织级通用约定:
|
|
57
|
+
|
|
58
|
+
- 设计稿基准 designWidth 750、sourceRoot/outputRoot 为 src/dist。
|
|
59
|
+
- framework 为 react、compiler 为 webpack5。
|
|
60
|
+
- 缓存 enable 为 true。
|
|
61
|
+
- mini/h5 postcss(pxtransform、autoprefixer、cssModules)。
|
|
62
|
+
- `@`→src 别名。
|
|
63
|
+
- APP_VERSION 版本注入(构建期读取消费方 package.json)。
|
|
64
|
+
|
|
65
|
+
### `readAppVersion()`
|
|
66
|
+
|
|
67
|
+
读取消费方 package.json 的 version。
|
|
68
|
+
|
|
69
|
+
### `devPreset`、`prodPreset`
|
|
70
|
+
|
|
71
|
+
dev/prod 环境预设。
|
|
72
|
+
|
|
73
|
+
### `UserConfigExport`、`UserConfigFn`、`ConfigEnv`
|
|
74
|
+
|
|
75
|
+
re-export `@tarojs/cli` 类型。
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Taro 小程序公共基础配置
|
|
3
|
+
*
|
|
4
|
+
* 严格对标 ktv 生产形态(apps/taro-app/config/index.ts 的 getBaseConfig),
|
|
5
|
+
* 移除 ktv 项目专属项(@taroify 相关、TARO_APP_* 注入、api/store 缓存隔离、React 18 alias 等),
|
|
6
|
+
* 保留组织级通用约定作为预设。消费方任何字段皆可覆盖,预设非锁定。
|
|
7
|
+
*/
|
|
8
|
+
import type { IProjectConfig } from '@tarojs/taro/types/compile';
|
|
9
|
+
/**
|
|
10
|
+
* LZI miniprogram 公共基础配置预设
|
|
11
|
+
*
|
|
12
|
+
* 对标 ktv getBaseConfig 的组织级通用部分:设计稿基准、目录、技术栈、
|
|
13
|
+
* webpack5 持久化缓存开关、mini/h5 postcss、@ 别名、APP_VERSION 版本注入。
|
|
14
|
+
* 项目专属配置(prebundle exclude、缓存 name 隔离、环境变量注入、UI 库兼容等)由消费方覆盖。
|
|
15
|
+
*
|
|
16
|
+
* @returns 可作为 defineConfig 传参基础部分的配置对象
|
|
17
|
+
*/
|
|
18
|
+
export declare function createBaseConfig(): IProjectConfig;
|
|
19
|
+
//# sourceMappingURL=base.config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.config.d.ts","sourceRoot":"","sources":["../src/base.config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAMjE;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,IAAI,cAAc,CAiEjD","sourcesContent":["/**\n * Taro 小程序公共基础配置\n *\n * 严格对标 ktv 生产形态(apps/taro-app/config/index.ts 的 getBaseConfig),\n * 移除 ktv 项目专属项(@taroify 相关、TARO_APP_* 注入、api/store 缓存隔离、React 18 alias 等),\n * 保留组织级通用约定作为预设。消费方任何字段皆可覆盖,预设非锁定。\n */\n\nimport type { IProjectConfig } from '@tarojs/taro/types/compile';\n\nimport path from 'node:path';\n\nimport { readAppVersion } from './version.utils.js';\n\n/**\n * LZI miniprogram 公共基础配置预设\n *\n * 对标 ktv getBaseConfig 的组织级通用部分:设计稿基准、目录、技术栈、\n * webpack5 持久化缓存开关、mini/h5 postcss、@ 别名、APP_VERSION 版本注入。\n * 项目专属配置(prebundle exclude、缓存 name 隔离、环境变量注入、UI 库兼容等)由消费方覆盖。\n *\n * @returns 可作为 defineConfig 传参基础部分的配置对象\n */\nexport function createBaseConfig(): IProjectConfig {\n return {\n designWidth: 750,\n deviceRatio: {\n 640: 2.34 / 2,\n 750: 1,\n 375: 2,\n 828: 1.81 / 2,\n },\n sourceRoot: 'src',\n outputRoot: 'dist',\n copy: {\n patterns: [],\n options: {},\n },\n framework: 'react',\n compiler: {\n type: 'webpack5',\n },\n cache: {\n enable: true,\n },\n defineConstants: {\n /**\n * 应用版本号,构建期从消费方 package.json 读取并静态注入,\n * 运行时代码通过 APP_VERSION 访问\n */\n APP_VERSION: JSON.stringify(readAppVersion()),\n },\n mini: {\n postcss: {\n pxtransform: {\n enable: true,\n config: {},\n },\n cssModules: {\n enable: false,\n config: {\n namingPattern: 'module',\n generateScopedName: '[name]__[local]___[hash:base64:5]',\n },\n },\n },\n },\n h5: {\n publicPath: '/',\n staticDirectory: 'static',\n postcss: {\n autoprefixer: {\n enable: true,\n config: {},\n },\n cssModules: {\n enable: false,\n config: {\n namingPattern: 'module',\n generateScopedName: '[name]__[local]___[hash:base64:5]',\n },\n },\n },\n },\n alias: {\n '@': path.resolve(process.cwd(), 'src'),\n },\n };\n}\n"]}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Taro 小程序公共基础配置
|
|
3
|
+
*
|
|
4
|
+
* 严格对标 ktv 生产形态(apps/taro-app/config/index.ts 的 getBaseConfig),
|
|
5
|
+
* 移除 ktv 项目专属项(@taroify 相关、TARO_APP_* 注入、api/store 缓存隔离、React 18 alias 等),
|
|
6
|
+
* 保留组织级通用约定作为预设。消费方任何字段皆可覆盖,预设非锁定。
|
|
7
|
+
*/
|
|
8
|
+
import path from 'node:path';
|
|
9
|
+
import { readAppVersion } from './version.utils.js';
|
|
10
|
+
/**
|
|
11
|
+
* LZI miniprogram 公共基础配置预设
|
|
12
|
+
*
|
|
13
|
+
* 对标 ktv getBaseConfig 的组织级通用部分:设计稿基准、目录、技术栈、
|
|
14
|
+
* webpack5 持久化缓存开关、mini/h5 postcss、@ 别名、APP_VERSION 版本注入。
|
|
15
|
+
* 项目专属配置(prebundle exclude、缓存 name 隔离、环境变量注入、UI 库兼容等)由消费方覆盖。
|
|
16
|
+
*
|
|
17
|
+
* @returns 可作为 defineConfig 传参基础部分的配置对象
|
|
18
|
+
*/
|
|
19
|
+
export function createBaseConfig() {
|
|
20
|
+
return {
|
|
21
|
+
designWidth: 750,
|
|
22
|
+
deviceRatio: {
|
|
23
|
+
640: 2.34 / 2,
|
|
24
|
+
750: 1,
|
|
25
|
+
375: 2,
|
|
26
|
+
828: 1.81 / 2,
|
|
27
|
+
},
|
|
28
|
+
sourceRoot: 'src',
|
|
29
|
+
outputRoot: 'dist',
|
|
30
|
+
copy: {
|
|
31
|
+
patterns: [],
|
|
32
|
+
options: {},
|
|
33
|
+
},
|
|
34
|
+
framework: 'react',
|
|
35
|
+
compiler: {
|
|
36
|
+
type: 'webpack5',
|
|
37
|
+
},
|
|
38
|
+
cache: {
|
|
39
|
+
enable: true,
|
|
40
|
+
},
|
|
41
|
+
defineConstants: {
|
|
42
|
+
/**
|
|
43
|
+
* 应用版本号,构建期从消费方 package.json 读取并静态注入,
|
|
44
|
+
* 运行时代码通过 APP_VERSION 访问
|
|
45
|
+
*/
|
|
46
|
+
APP_VERSION: JSON.stringify(readAppVersion()),
|
|
47
|
+
},
|
|
48
|
+
mini: {
|
|
49
|
+
postcss: {
|
|
50
|
+
pxtransform: {
|
|
51
|
+
enable: true,
|
|
52
|
+
config: {},
|
|
53
|
+
},
|
|
54
|
+
cssModules: {
|
|
55
|
+
enable: false,
|
|
56
|
+
config: {
|
|
57
|
+
namingPattern: 'module',
|
|
58
|
+
generateScopedName: '[name]__[local]___[hash:base64:5]',
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
h5: {
|
|
64
|
+
publicPath: '/',
|
|
65
|
+
staticDirectory: 'static',
|
|
66
|
+
postcss: {
|
|
67
|
+
autoprefixer: {
|
|
68
|
+
enable: true,
|
|
69
|
+
config: {},
|
|
70
|
+
},
|
|
71
|
+
cssModules: {
|
|
72
|
+
enable: false,
|
|
73
|
+
config: {
|
|
74
|
+
namingPattern: 'module',
|
|
75
|
+
generateScopedName: '[name]__[local]___[hash:base64:5]',
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
alias: {
|
|
81
|
+
'@': path.resolve(process.cwd(), 'src'),
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=base.config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.config.js","sourceRoot":"","sources":["../src/base.config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO;QACL,WAAW,EAAE,GAAG;QAChB,WAAW,EAAE;YACX,GAAG,EAAE,IAAI,GAAG,CAAC;YACb,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,IAAI,GAAG,CAAC;SACd;QACD,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE,MAAM;QAClB,IAAI,EAAE;YACJ,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,EAAE;SACZ;QACD,SAAS,EAAE,OAAO;QAClB,QAAQ,EAAE;YACR,IAAI,EAAE,UAAU;SACjB;QACD,KAAK,EAAE;YACL,MAAM,EAAE,IAAI;SACb;QACD,eAAe,EAAE;YACf;;;eAGG;YACH,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;SAC9C;QACD,IAAI,EAAE;YACJ,OAAO,EAAE;gBACP,WAAW,EAAE;oBACX,MAAM,EAAE,IAAI;oBACZ,MAAM,EAAE,EAAE;iBACX;gBACD,UAAU,EAAE;oBACV,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE;wBACN,aAAa,EAAE,QAAQ;wBACvB,kBAAkB,EAAE,mCAAmC;qBACxD;iBACF;aACF;SACF;QACD,EAAE,EAAE;YACF,UAAU,EAAE,GAAG;YACf,eAAe,EAAE,QAAQ;YACzB,OAAO,EAAE;gBACP,YAAY,EAAE;oBACZ,MAAM,EAAE,IAAI;oBACZ,MAAM,EAAE,EAAE;iBACX;gBACD,UAAU,EAAE;oBACV,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE;wBACN,aAAa,EAAE,QAAQ;wBACvB,kBAAkB,EAAE,mCAAmC;qBACxD;iBACF;aACF;SACF;QACD,KAAK,EAAE;YACL,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC;SACxC;KACF,CAAC;AACJ,CAAC","sourcesContent":["/**\n * Taro 小程序公共基础配置\n *\n * 严格对标 ktv 生产形态(apps/taro-app/config/index.ts 的 getBaseConfig),\n * 移除 ktv 项目专属项(@taroify 相关、TARO_APP_* 注入、api/store 缓存隔离、React 18 alias 等),\n * 保留组织级通用约定作为预设。消费方任何字段皆可覆盖,预设非锁定。\n */\n\nimport type { IProjectConfig } from '@tarojs/taro/types/compile';\n\nimport path from 'node:path';\n\nimport { readAppVersion } from './version.utils.js';\n\n/**\n * LZI miniprogram 公共基础配置预设\n *\n * 对标 ktv getBaseConfig 的组织级通用部分:设计稿基准、目录、技术栈、\n * webpack5 持久化缓存开关、mini/h5 postcss、@ 别名、APP_VERSION 版本注入。\n * 项目专属配置(prebundle exclude、缓存 name 隔离、环境变量注入、UI 库兼容等)由消费方覆盖。\n *\n * @returns 可作为 defineConfig 传参基础部分的配置对象\n */\nexport function createBaseConfig(): IProjectConfig {\n return {\n designWidth: 750,\n deviceRatio: {\n 640: 2.34 / 2,\n 750: 1,\n 375: 2,\n 828: 1.81 / 2,\n },\n sourceRoot: 'src',\n outputRoot: 'dist',\n copy: {\n patterns: [],\n options: {},\n },\n framework: 'react',\n compiler: {\n type: 'webpack5',\n },\n cache: {\n enable: true,\n },\n defineConstants: {\n /**\n * 应用版本号,构建期从消费方 package.json 读取并静态注入,\n * 运行时代码通过 APP_VERSION 访问\n */\n APP_VERSION: JSON.stringify(readAppVersion()),\n },\n mini: {\n postcss: {\n pxtransform: {\n enable: true,\n config: {},\n },\n cssModules: {\n enable: false,\n config: {\n namingPattern: 'module',\n generateScopedName: '[name]__[local]___[hash:base64:5]',\n },\n },\n },\n },\n h5: {\n publicPath: '/',\n staticDirectory: 'static',\n postcss: {\n autoprefixer: {\n enable: true,\n config: {},\n },\n cssModules: {\n enable: false,\n config: {\n namingPattern: 'module',\n generateScopedName: '[name]__[local]___[hash:base64:5]',\n },\n },\n },\n },\n alias: {\n '@': path.resolve(process.cwd(), 'src'),\n },\n };\n}\n"]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Taro miniprogram 配置定义
|
|
3
|
+
*
|
|
4
|
+
* 在 @tarojs/cli 的 defineConfig 之上提供 LZI 公共 base 预设:
|
|
5
|
+
* - 传入对象:自动与 base 预设、dev/prod 预设深合并(消费方字段覆盖预设),返回完整配置
|
|
6
|
+
* - 传入回调:透传给 @tarojs/cli 原生 defineConfig,消费方在回调内自行用 createBaseConfig 等
|
|
7
|
+
* 预设组装,完全掌控动态逻辑(版本注入、环境变量、缓存隔离等)
|
|
8
|
+
*
|
|
9
|
+
* 两种形态的 base 始终是预设而非锁定——消费方任何字段都可覆盖。
|
|
10
|
+
*/
|
|
11
|
+
import type { IProjectConfig } from '@tarojs/taro/types/compile';
|
|
12
|
+
import { type UserConfigExport, type UserConfigFn } from '@tarojs/cli';
|
|
13
|
+
/**
|
|
14
|
+
* miniprogram 配置定义
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* 对象形态(自动注入 base 预设)
|
|
18
|
+
* ```ts
|
|
19
|
+
* import { defineConfig } from '@longzai-intelligence-taro/config';
|
|
20
|
+
* export default defineConfig({ projectName: 'longzai-intelligence-foo-miniprogram' });
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* 回调形态(消费方完全掌控,base 预设作起点)
|
|
25
|
+
* ```ts
|
|
26
|
+
* import { createBaseConfig, defineConfig } from '@longzai-intelligence-taro/config';
|
|
27
|
+
* export default defineConfig(async (merge) => {
|
|
28
|
+
* return merge({}, createBaseConfig(), { /* 项目专属动态配置 *\/ });
|
|
29
|
+
* });
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* @param config - 静态配置对象(与 base 预设深合并,同名字段以本参数为准),或
|
|
33
|
+
* 回调函数(透传 @tarojs/cli 原生 defineConfig,回调内自由组装)
|
|
34
|
+
* @returns 可直接 `export default` 的 UserConfigExport
|
|
35
|
+
*/
|
|
36
|
+
export declare function defineConfig(config: Partial<IProjectConfig> | UserConfigFn): UserConfigExport;
|
|
37
|
+
//# sourceMappingURL=define.config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define.config.d.ts","sourceRoot":"","sources":["../src/define.config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AAerB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,YAAY,GAAG,gBAAgB,CAuB7F","sourcesContent":["/**\n * Taro miniprogram 配置定义\n *\n * 在 @tarojs/cli 的 defineConfig 之上提供 LZI 公共 base 预设:\n * - 传入对象:自动与 base 预设、dev/prod 预设深合并(消费方字段覆盖预设),返回完整配置\n * - 传入回调:透传给 @tarojs/cli 原生 defineConfig,消费方在回调内自行用 createBaseConfig 等\n * 预设组装,完全掌控动态逻辑(版本注入、环境变量、缓存隔离等)\n *\n * 两种形态的 base 始终是预设而非锁定——消费方任何字段都可覆盖。\n */\n\nimport type { IProjectConfig } from '@tarojs/taro/types/compile';\n\nimport {\n defineConfig as defineTaroConfig,\n type UserConfigExport,\n type UserConfigFn,\n} from '@tarojs/cli';\n\nimport { createBaseConfig } from './base.config.js';\nimport { devPreset, prodPreset } from './presets.js';\n\n/**\n * 判断入参是否为回调形态(类型守卫,替代 as 断言)\n *\n * @param config - defineConfig 入参\n * @returns 是否为函数(回调形态)\n */\nfunction isUserConfigFn(config: Partial<IProjectConfig> | UserConfigFn): config is UserConfigFn {\n return typeof config === 'function';\n}\n\n/**\n * miniprogram 配置定义\n *\n * @example\n * 对象形态(自动注入 base 预设)\n * ```ts\n * import { defineConfig } from '@longzai-intelligence-taro/config';\n * export default defineConfig({ projectName: 'longzai-intelligence-foo-miniprogram' });\n * ```\n *\n * @example\n * 回调形态(消费方完全掌控,base 预设作起点)\n * ```ts\n * import { createBaseConfig, defineConfig } from '@longzai-intelligence-taro/config';\n * export default defineConfig(async (merge) => {\n * return merge({}, createBaseConfig(), { /* 项目专属动态配置 *\\/ });\n * });\n * ```\n *\n * @param config - 静态配置对象(与 base 预设深合并,同名字段以本参数为准),或\n * 回调函数(透传 @tarojs/cli 原生 defineConfig,回调内自由组装)\n * @returns 可直接 `export default` 的 UserConfigExport\n */\nexport function defineConfig(config: Partial<IProjectConfig> | UserConfigFn): UserConfigExport {\n if (isUserConfigFn(config)) {\n return defineTaroConfig(config);\n }\n\n /**\n * 消费方项目专属配置(静态对象形态)\n */\n const projectConfig = config;\n\n return defineTaroConfig(async (merge) => {\n /**\n * LZI 公共基础配置预设\n */\n const base = createBaseConfig();\n\n /**\n * 按 NODE_ENV 选取的环境预设\n */\n const envPreset = process.env.NODE_ENV === 'development' ? devPreset : prodPreset;\n\n return merge({}, base, envPreset, projectConfig);\n });\n}\n"]}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Taro miniprogram 配置定义
|
|
3
|
+
*
|
|
4
|
+
* 在 @tarojs/cli 的 defineConfig 之上提供 LZI 公共 base 预设:
|
|
5
|
+
* - 传入对象:自动与 base 预设、dev/prod 预设深合并(消费方字段覆盖预设),返回完整配置
|
|
6
|
+
* - 传入回调:透传给 @tarojs/cli 原生 defineConfig,消费方在回调内自行用 createBaseConfig 等
|
|
7
|
+
* 预设组装,完全掌控动态逻辑(版本注入、环境变量、缓存隔离等)
|
|
8
|
+
*
|
|
9
|
+
* 两种形态的 base 始终是预设而非锁定——消费方任何字段都可覆盖。
|
|
10
|
+
*/
|
|
11
|
+
import { defineConfig as defineTaroConfig, } from '@tarojs/cli';
|
|
12
|
+
import { createBaseConfig } from './base.config.js';
|
|
13
|
+
import { devPreset, prodPreset } from './presets.js';
|
|
14
|
+
/**
|
|
15
|
+
* 判断入参是否为回调形态(类型守卫,替代 as 断言)
|
|
16
|
+
*
|
|
17
|
+
* @param config - defineConfig 入参
|
|
18
|
+
* @returns 是否为函数(回调形态)
|
|
19
|
+
*/
|
|
20
|
+
function isUserConfigFn(config) {
|
|
21
|
+
return typeof config === 'function';
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* miniprogram 配置定义
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* 对象形态(自动注入 base 预设)
|
|
28
|
+
* ```ts
|
|
29
|
+
* import { defineConfig } from '@longzai-intelligence-taro/config';
|
|
30
|
+
* export default defineConfig({ projectName: 'longzai-intelligence-foo-miniprogram' });
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* 回调形态(消费方完全掌控,base 预设作起点)
|
|
35
|
+
* ```ts
|
|
36
|
+
* import { createBaseConfig, defineConfig } from '@longzai-intelligence-taro/config';
|
|
37
|
+
* export default defineConfig(async (merge) => {
|
|
38
|
+
* return merge({}, createBaseConfig(), { /* 项目专属动态配置 *\/ });
|
|
39
|
+
* });
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* @param config - 静态配置对象(与 base 预设深合并,同名字段以本参数为准),或
|
|
43
|
+
* 回调函数(透传 @tarojs/cli 原生 defineConfig,回调内自由组装)
|
|
44
|
+
* @returns 可直接 `export default` 的 UserConfigExport
|
|
45
|
+
*/
|
|
46
|
+
export function defineConfig(config) {
|
|
47
|
+
if (isUserConfigFn(config)) {
|
|
48
|
+
return defineTaroConfig(config);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* 消费方项目专属配置(静态对象形态)
|
|
52
|
+
*/
|
|
53
|
+
const projectConfig = config;
|
|
54
|
+
return defineTaroConfig(async (merge) => {
|
|
55
|
+
/**
|
|
56
|
+
* LZI 公共基础配置预设
|
|
57
|
+
*/
|
|
58
|
+
const base = createBaseConfig();
|
|
59
|
+
/**
|
|
60
|
+
* 按 NODE_ENV 选取的环境预设
|
|
61
|
+
*/
|
|
62
|
+
const envPreset = process.env.NODE_ENV === 'development' ? devPreset : prodPreset;
|
|
63
|
+
return merge({}, base, envPreset, projectConfig);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=define.config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define.config.js","sourceRoot":"","sources":["../src/define.config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EACL,YAAY,IAAI,gBAAgB,GAGjC,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAErD;;;;;GAKG;AACH,SAAS,cAAc,CAAC,MAA8C;IACpE,OAAO,OAAO,MAAM,KAAK,UAAU,CAAC;AACtC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,YAAY,CAAC,MAA8C;IACzE,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,MAAM,aAAa,GAAG,MAAM,CAAC;IAE7B,OAAO,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACtC;;WAEG;QACH,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC;QAEhC;;WAEG;QACH,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;QAElF,OAAO,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["/**\n * Taro miniprogram 配置定义\n *\n * 在 @tarojs/cli 的 defineConfig 之上提供 LZI 公共 base 预设:\n * - 传入对象:自动与 base 预设、dev/prod 预设深合并(消费方字段覆盖预设),返回完整配置\n * - 传入回调:透传给 @tarojs/cli 原生 defineConfig,消费方在回调内自行用 createBaseConfig 等\n * 预设组装,完全掌控动态逻辑(版本注入、环境变量、缓存隔离等)\n *\n * 两种形态的 base 始终是预设而非锁定——消费方任何字段都可覆盖。\n */\n\nimport type { IProjectConfig } from '@tarojs/taro/types/compile';\n\nimport {\n defineConfig as defineTaroConfig,\n type UserConfigExport,\n type UserConfigFn,\n} from '@tarojs/cli';\n\nimport { createBaseConfig } from './base.config.js';\nimport { devPreset, prodPreset } from './presets.js';\n\n/**\n * 判断入参是否为回调形态(类型守卫,替代 as 断言)\n *\n * @param config - defineConfig 入参\n * @returns 是否为函数(回调形态)\n */\nfunction isUserConfigFn(config: Partial<IProjectConfig> | UserConfigFn): config is UserConfigFn {\n return typeof config === 'function';\n}\n\n/**\n * miniprogram 配置定义\n *\n * @example\n * 对象形态(自动注入 base 预设)\n * ```ts\n * import { defineConfig } from '@longzai-intelligence-taro/config';\n * export default defineConfig({ projectName: 'longzai-intelligence-foo-miniprogram' });\n * ```\n *\n * @example\n * 回调形态(消费方完全掌控,base 预设作起点)\n * ```ts\n * import { createBaseConfig, defineConfig } from '@longzai-intelligence-taro/config';\n * export default defineConfig(async (merge) => {\n * return merge({}, createBaseConfig(), { /* 项目专属动态配置 *\\/ });\n * });\n * ```\n *\n * @param config - 静态配置对象(与 base 预设深合并,同名字段以本参数为准),或\n * 回调函数(透传 @tarojs/cli 原生 defineConfig,回调内自由组装)\n * @returns 可直接 `export default` 的 UserConfigExport\n */\nexport function defineConfig(config: Partial<IProjectConfig> | UserConfigFn): UserConfigExport {\n if (isUserConfigFn(config)) {\n return defineTaroConfig(config);\n }\n\n /**\n * 消费方项目专属配置(静态对象形态)\n */\n const projectConfig = config;\n\n return defineTaroConfig(async (merge) => {\n /**\n * LZI 公共基础配置预设\n */\n const base = createBaseConfig();\n\n /**\n * 按 NODE_ENV 选取的环境预设\n */\n const envPreset = process.env.NODE_ENV === 'development' ? devPreset : prodPreset;\n\n return merge({}, base, envPreset, projectConfig);\n });\n}\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Taro
|
|
2
|
+
* Taro 构建配置封装入口
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* 导出预置 LZI 公共基础配置的 defineConfig,以及 base/preset 构建块,
|
|
5
|
+
* 消除各项目 miniprogram config 三件套的重复样板。用法与 @tarojs/cli 的 defineConfig 一致。
|
|
6
6
|
*/
|
|
7
|
-
export {
|
|
7
|
+
export type { ConfigEnv, UserConfigExport, UserConfigFn } from '@tarojs/cli';
|
|
8
|
+
export { defineConfig } from './define.config.js';
|
|
9
|
+
export { createBaseConfig } from './base.config.js';
|
|
10
|
+
export { readAppVersion } from './version.utils.js';
|
|
11
|
+
export { devPreset, prodPreset } from './presets.js';
|
|
8
12
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE7E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC","sourcesContent":["/**\n * Taro 构建配置封装入口\n *\n * 导出预置 LZI 公共基础配置的 defineConfig,以及 base/preset 构建块,\n * 消除各项目 miniprogram config 三件套的重复样板。用法与 @tarojs/cli 的 defineConfig 一致。\n */\n\nexport type { ConfigEnv, UserConfigExport, UserConfigFn } from '@tarojs/cli';\n\nexport { defineConfig } from './define.config.js';\n\nexport { createBaseConfig } from './base.config.js';\n\nexport { readAppVersion } from './version.utils.js';\n\nexport { devPreset, prodPreset } from './presets.js';\n"]}
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Taro
|
|
2
|
+
* Taro 构建配置封装入口
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* 导出预置 LZI 公共基础配置的 defineConfig,以及 base/preset 构建块,
|
|
5
|
+
* 消除各项目 miniprogram config 三件套的重复样板。用法与 @tarojs/cli 的 defineConfig 一致。
|
|
6
6
|
*/
|
|
7
|
-
export { defineConfig
|
|
7
|
+
export { defineConfig } from './define.config.js';
|
|
8
|
+
export { createBaseConfig } from './base.config.js';
|
|
9
|
+
export { readAppVersion } from './version.utils.js';
|
|
10
|
+
export { devPreset, prodPreset } from './presets.js';
|
|
8
11
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC","sourcesContent":["/**\n * Taro 构建配置封装入口\n *\n * 导出预置 LZI 公共基础配置的 defineConfig,以及 base/preset 构建块,\n * 消除各项目 miniprogram config 三件套的重复样板。用法与 @tarojs/cli 的 defineConfig 一致。\n */\n\nexport type { ConfigEnv, UserConfigExport, UserConfigFn } from '@tarojs/cli';\n\nexport { defineConfig } from './define.config.js';\n\nexport { createBaseConfig } from './base.config.js';\n\nexport { readAppVersion } from './version.utils.js';\n\nexport { devPreset, prodPreset } from './presets.js';\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Taro 开发/生产环境预设配置
|
|
3
|
+
*
|
|
4
|
+
* 替代原 miniprogram 中 `config/dev.ts`、`config/prod.ts` 通过 `import devConfig from '../dev'`
|
|
5
|
+
* 引用的死引用(项目根 dev.ts/prod.ts 实际不存在)。此预设提供 merge 用的标准环境覆盖项。
|
|
6
|
+
*/
|
|
7
|
+
import type { IProjectConfig } from '@tarojs/taro/types/compile';
|
|
8
|
+
/**
|
|
9
|
+
* 开发环境预设:开启日志输出
|
|
10
|
+
*/
|
|
11
|
+
export declare const devPreset: Partial<IProjectConfig>;
|
|
12
|
+
/**
|
|
13
|
+
* 生产环境预设:关闭日志输出
|
|
14
|
+
*/
|
|
15
|
+
export declare const prodPreset: Partial<IProjectConfig>;
|
|
16
|
+
//# sourceMappingURL=presets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,OAAO,CAAC,cAAc,CAO7C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,OAAO,CAAC,cAAc,CAO9C,CAAC","sourcesContent":["/**\n * Taro 开发/生产环境预设配置\n *\n * 替代原 miniprogram 中 `config/dev.ts`、`config/prod.ts` 通过 `import devConfig from '../dev'`\n * 引用的死引用(项目根 dev.ts/prod.ts 实际不存在)。此预设提供 merge 用的标准环境覆盖项。\n */\n\nimport type { IProjectConfig } from '@tarojs/taro/types/compile';\n\n/**\n * 开发环境预设:开启日志输出\n */\nexport const devPreset: Partial<IProjectConfig> = {\n logger: {\n quiet: false,\n stats: true,\n },\n mini: {},\n h5: {},\n};\n\n/**\n * 生产环境预设:关闭日志输出\n */\nexport const prodPreset: Partial<IProjectConfig> = {\n logger: {\n quiet: false,\n stats: false,\n },\n mini: {},\n h5: {},\n};\n"]}
|
package/dist/presets.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Taro 开发/生产环境预设配置
|
|
3
|
+
*
|
|
4
|
+
* 替代原 miniprogram 中 `config/dev.ts`、`config/prod.ts` 通过 `import devConfig from '../dev'`
|
|
5
|
+
* 引用的死引用(项目根 dev.ts/prod.ts 实际不存在)。此预设提供 merge 用的标准环境覆盖项。
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* 开发环境预设:开启日志输出
|
|
9
|
+
*/
|
|
10
|
+
export const devPreset = {
|
|
11
|
+
logger: {
|
|
12
|
+
quiet: false,
|
|
13
|
+
stats: true,
|
|
14
|
+
},
|
|
15
|
+
mini: {},
|
|
16
|
+
h5: {},
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* 生产环境预设:关闭日志输出
|
|
20
|
+
*/
|
|
21
|
+
export const prodPreset = {
|
|
22
|
+
logger: {
|
|
23
|
+
quiet: false,
|
|
24
|
+
stats: false,
|
|
25
|
+
},
|
|
26
|
+
mini: {},
|
|
27
|
+
h5: {},
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=presets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAA4B;IAChD,MAAM,EAAE;QACN,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;KACZ;IACD,IAAI,EAAE,EAAE;IACR,EAAE,EAAE,EAAE;CACP,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAA4B;IACjD,MAAM,EAAE;QACN,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;KACb;IACD,IAAI,EAAE,EAAE;IACR,EAAE,EAAE,EAAE;CACP,CAAC","sourcesContent":["/**\n * Taro 开发/生产环境预设配置\n *\n * 替代原 miniprogram 中 `config/dev.ts`、`config/prod.ts` 通过 `import devConfig from '../dev'`\n * 引用的死引用(项目根 dev.ts/prod.ts 实际不存在)。此预设提供 merge 用的标准环境覆盖项。\n */\n\nimport type { IProjectConfig } from '@tarojs/taro/types/compile';\n\n/**\n * 开发环境预设:开启日志输出\n */\nexport const devPreset: Partial<IProjectConfig> = {\n logger: {\n quiet: false,\n stats: true,\n },\n mini: {},\n h5: {},\n};\n\n/**\n * 生产环境预设:关闭日志输出\n */\nexport const prodPreset: Partial<IProjectConfig> = {\n logger: {\n quiet: false,\n stats: false,\n },\n mini: {},\n h5: {},\n};\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 应用版本元信息读取
|
|
3
|
+
*
|
|
4
|
+
* 构建期从消费方 miniprogram 的 package.json 读取 version,
|
|
5
|
+
* 供 defineConstants 注入运行时 APP_VERSION。与 Taro 构建配置骨架分离。
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* 读取消费方 miniprogram 的 package.json 并提取 version
|
|
9
|
+
*
|
|
10
|
+
* Taro 在 miniprogram 目录执行构建,process.cwd() 即该目录;
|
|
11
|
+
* 读取其 package.json 的 version 字段。
|
|
12
|
+
*
|
|
13
|
+
* @returns 应用版本号
|
|
14
|
+
* @throws {@link Error} package.json 缺失 version 字段或解析失败时抛出
|
|
15
|
+
*/
|
|
16
|
+
export declare function readAppVersion(): string;
|
|
17
|
+
//# sourceMappingURL=version.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.utils.d.ts","sourceRoot":"","sources":["../src/version.utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmCH;;;;;;;;GAQG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAoBvC","sourcesContent":["/**\n * 应用版本元信息读取\n *\n * 构建期从消费方 miniprogram 的 package.json 读取 version,\n * 供 defineConstants 注入运行时 APP_VERSION。与 Taro 构建配置骨架分离。\n */\n\nimport { readFileSync } from 'node:fs';\nimport path from 'node:path';\n\n/**\n * 判断值是否为非空字符串\n *\n * @param value - 待判断的值\n * @returns 是否为长度大于 0 的字符串\n */\nfunction isNonEmptyString(value: unknown): value is string {\n return typeof value === 'string' && value.length > 0;\n}\n\n/**\n * 从未知结构中安全取出 version 字段(类型守卫,无 as 断言)\n *\n * @param parsed - JSON.parse 的结果\n * @returns version 值(无法判定时为 undefined)\n */\nfunction extractVersion(parsed: unknown): unknown {\n if (typeof parsed !== 'object' || parsed === null) {\n return undefined;\n }\n\n /**\n * 按键取值,in 操作符天然收窄对象类型,无需断言\n */\n if ('version' in parsed) {\n return parsed.version;\n }\n return undefined;\n}\n\n/**\n * 读取消费方 miniprogram 的 package.json 并提取 version\n *\n * Taro 在 miniprogram 目录执行构建,process.cwd() 即该目录;\n * 读取其 package.json 的 version 字段。\n *\n * @returns 应用版本号\n * @throws {@link Error} package.json 缺失 version 字段或解析失败时抛出\n */\nexport function readAppVersion(): string {\n /**\n * package.json 文件绝对路径\n */\n const pkgPath = path.resolve(process.cwd(), 'package.json');\n\n /**\n * package.json 解析结果\n */\n const parsed: unknown = JSON.parse(readFileSync(pkgPath, 'utf-8'));\n\n /**\n * 待校验的 version 值(从解析结果按结构取出)\n */\n const versionCandidate = extractVersion(parsed);\n\n if (!isNonEmptyString(versionCandidate)) {\n throw new Error(`package.json 缺失 version 字段: ${pkgPath}`);\n }\n return versionCandidate;\n}\n"]}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 应用版本元信息读取
|
|
3
|
+
*
|
|
4
|
+
* 构建期从消费方 miniprogram 的 package.json 读取 version,
|
|
5
|
+
* 供 defineConstants 注入运行时 APP_VERSION。与 Taro 构建配置骨架分离。
|
|
6
|
+
*/
|
|
7
|
+
import { readFileSync } from 'node:fs';
|
|
8
|
+
import path from 'node:path';
|
|
9
|
+
/**
|
|
10
|
+
* 判断值是否为非空字符串
|
|
11
|
+
*
|
|
12
|
+
* @param value - 待判断的值
|
|
13
|
+
* @returns 是否为长度大于 0 的字符串
|
|
14
|
+
*/
|
|
15
|
+
function isNonEmptyString(value) {
|
|
16
|
+
return typeof value === 'string' && value.length > 0;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* 从未知结构中安全取出 version 字段(类型守卫,无 as 断言)
|
|
20
|
+
*
|
|
21
|
+
* @param parsed - JSON.parse 的结果
|
|
22
|
+
* @returns version 值(无法判定时为 undefined)
|
|
23
|
+
*/
|
|
24
|
+
function extractVersion(parsed) {
|
|
25
|
+
if (typeof parsed !== 'object' || parsed === null) {
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* 按键取值,in 操作符天然收窄对象类型,无需断言
|
|
30
|
+
*/
|
|
31
|
+
if ('version' in parsed) {
|
|
32
|
+
return parsed.version;
|
|
33
|
+
}
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* 读取消费方 miniprogram 的 package.json 并提取 version
|
|
38
|
+
*
|
|
39
|
+
* Taro 在 miniprogram 目录执行构建,process.cwd() 即该目录;
|
|
40
|
+
* 读取其 package.json 的 version 字段。
|
|
41
|
+
*
|
|
42
|
+
* @returns 应用版本号
|
|
43
|
+
* @throws {@link Error} package.json 缺失 version 字段或解析失败时抛出
|
|
44
|
+
*/
|
|
45
|
+
export function readAppVersion() {
|
|
46
|
+
/**
|
|
47
|
+
* package.json 文件绝对路径
|
|
48
|
+
*/
|
|
49
|
+
const pkgPath = path.resolve(process.cwd(), 'package.json');
|
|
50
|
+
/**
|
|
51
|
+
* package.json 解析结果
|
|
52
|
+
*/
|
|
53
|
+
const parsed = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
54
|
+
/**
|
|
55
|
+
* 待校验的 version 值(从解析结果按结构取出)
|
|
56
|
+
*/
|
|
57
|
+
const versionCandidate = extractVersion(parsed);
|
|
58
|
+
if (!isNonEmptyString(versionCandidate)) {
|
|
59
|
+
throw new Error(`package.json 缺失 version 字段: ${pkgPath}`);
|
|
60
|
+
}
|
|
61
|
+
return versionCandidate;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=version.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.utils.js","sourceRoot":"","sources":["../src/version.utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACvD,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,MAAe;IACrC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAClD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc;IAC5B;;OAEG;IACH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;IAE5D;;OAEG;IACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAEnE;;OAEG;IACH,MAAM,gBAAgB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAEhD,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAO,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC","sourcesContent":["/**\n * 应用版本元信息读取\n *\n * 构建期从消费方 miniprogram 的 package.json 读取 version,\n * 供 defineConstants 注入运行时 APP_VERSION。与 Taro 构建配置骨架分离。\n */\n\nimport { readFileSync } from 'node:fs';\nimport path from 'node:path';\n\n/**\n * 判断值是否为非空字符串\n *\n * @param value - 待判断的值\n * @returns 是否为长度大于 0 的字符串\n */\nfunction isNonEmptyString(value: unknown): value is string {\n return typeof value === 'string' && value.length > 0;\n}\n\n/**\n * 从未知结构中安全取出 version 字段(类型守卫,无 as 断言)\n *\n * @param parsed - JSON.parse 的结果\n * @returns version 值(无法判定时为 undefined)\n */\nfunction extractVersion(parsed: unknown): unknown {\n if (typeof parsed !== 'object' || parsed === null) {\n return undefined;\n }\n\n /**\n * 按键取值,in 操作符天然收窄对象类型,无需断言\n */\n if ('version' in parsed) {\n return parsed.version;\n }\n return undefined;\n}\n\n/**\n * 读取消费方 miniprogram 的 package.json 并提取 version\n *\n * Taro 在 miniprogram 目录执行构建,process.cwd() 即该目录;\n * 读取其 package.json 的 version 字段。\n *\n * @returns 应用版本号\n * @throws {@link Error} package.json 缺失 version 字段或解析失败时抛出\n */\nexport function readAppVersion(): string {\n /**\n * package.json 文件绝对路径\n */\n const pkgPath = path.resolve(process.cwd(), 'package.json');\n\n /**\n * package.json 解析结果\n */\n const parsed: unknown = JSON.parse(readFileSync(pkgPath, 'utf-8'));\n\n /**\n * 待校验的 version 值(从解析结果按结构取出)\n */\n const versionCandidate = extractVersion(parsed);\n\n if (!isNonEmptyString(versionCandidate)) {\n throw new Error(`package.json 缺失 version 字段: ${pkgPath}`);\n }\n return versionCandidate;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@longzai-intelligence-taro/config",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2",
|
|
4
4
|
"description": "Taro 构建配置封装 - re-export @tarojs/cli 的 defineConfig 与类型",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"config",
|
|
@@ -9,6 +9,10 @@
|
|
|
9
9
|
"taroutils"
|
|
10
10
|
],
|
|
11
11
|
"license": "UNLICENSED",
|
|
12
|
+
"files": [
|
|
13
|
+
"dist",
|
|
14
|
+
"README.md"
|
|
15
|
+
],
|
|
12
16
|
"type": "module",
|
|
13
17
|
"main": "./dist/index.js",
|
|
14
18
|
"types": "./dist/index.d.ts",
|
|
@@ -18,21 +22,19 @@
|
|
|
18
22
|
"types": "./dist/index.d.ts"
|
|
19
23
|
}
|
|
20
24
|
},
|
|
21
|
-
"files": [
|
|
22
|
-
"dist",
|
|
23
|
-
"README.md"
|
|
24
|
-
],
|
|
25
25
|
"scripts": {
|
|
26
26
|
"build": "tsgo --build tsconfig/build.json --force",
|
|
27
27
|
"build:prod": "bun run build",
|
|
28
28
|
"typecheck": "tsgo --noEmit -p tsconfig/app.json",
|
|
29
|
+
"lint": "oxlint && oxfmt --check",
|
|
30
|
+
"lint:fix": "oxlint --fix && oxfmt",
|
|
29
31
|
"prepublishOnly": "bun run build:prod",
|
|
30
32
|
"clean": "lzi-dev-cli clean"
|
|
31
33
|
},
|
|
32
|
-
"
|
|
34
|
+
"devDependencies": {
|
|
33
35
|
"@tarojs/cli": "^4.0.0"
|
|
34
36
|
},
|
|
35
|
-
"
|
|
37
|
+
"peerDependencies": {
|
|
36
38
|
"@tarojs/cli": "^4.0.0"
|
|
37
39
|
}
|
|
38
40
|
}
|