chore: update package version and dependencies; add env-config for dynamic config keys
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@kevisual/use-config",
|
"name": "@kevisual/use-config",
|
||||||
"version": "1.0.28",
|
"version": "1.0.29",
|
||||||
"types": "dist/config.d.ts",
|
"types": "dist/config.d.ts",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "npm run clean && code-builder build --dts",
|
"build": "npm run clean && code-builder build --dts",
|
||||||
@@ -18,8 +18,9 @@
|
|||||||
"license": "UNLICENSED",
|
"license": "UNLICENSED",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@kevisual/code-builder": "^0.0.3",
|
||||||
"@kevisual/context": "^0.0.4",
|
"@kevisual/context": "^0.0.4",
|
||||||
"@types/node": "^25.0.7",
|
"@types/node": "^25.2.0",
|
||||||
"dotenv": "^17.2.3"
|
"dotenv": "^17.2.3"
|
||||||
},
|
},
|
||||||
"exports": {
|
"exports": {
|
||||||
@@ -29,7 +30,8 @@
|
|||||||
},
|
},
|
||||||
"./context": "./dist/app.js",
|
"./context": "./dist/app.js",
|
||||||
"./file-store": "./dist/app.js",
|
"./file-store": "./dist/app.js",
|
||||||
"./env": "./dist/app.js"
|
"./env": "./dist/app.js",
|
||||||
|
"./env-config": "./src/env-config.ts"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"dotenv": "^17"
|
"dotenv": "^17"
|
||||||
|
|||||||
71
pnpm-lock.yaml
generated
Normal file
71
pnpm-lock.yaml
generated
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
lockfileVersion: '9.0'
|
||||||
|
|
||||||
|
settings:
|
||||||
|
autoInstallPeers: true
|
||||||
|
excludeLinksFromLockfile: false
|
||||||
|
|
||||||
|
importers:
|
||||||
|
|
||||||
|
.:
|
||||||
|
dependencies:
|
||||||
|
'@kevisual/load':
|
||||||
|
specifier: ^0.0.6
|
||||||
|
version: 0.0.6
|
||||||
|
devDependencies:
|
||||||
|
'@kevisual/code-builder':
|
||||||
|
specifier: ^0.0.3
|
||||||
|
version: 0.0.3
|
||||||
|
'@kevisual/context':
|
||||||
|
specifier: ^0.0.4
|
||||||
|
version: 0.0.4
|
||||||
|
'@types/node':
|
||||||
|
specifier: ^25.2.0
|
||||||
|
version: 25.2.0
|
||||||
|
dotenv:
|
||||||
|
specifier: ^17.2.3
|
||||||
|
version: 17.2.3
|
||||||
|
|
||||||
|
packages:
|
||||||
|
|
||||||
|
'@kevisual/code-builder@0.0.3':
|
||||||
|
resolution: {integrity: sha512-mw8HMYBI9otzBv0ASB/Rqb9g03NxpXlR97ScaLb5xeQFNwO/ohdrLdwuNohUBIzLosMWUkuTGIBzV63UhlgIvw==}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
|
'@kevisual/context@0.0.4':
|
||||||
|
resolution: {integrity: sha512-HJeLeZQLU+7tCluSfOyvkgKLs0HjCZrdJlZgEgKRSa8XTwZfMAUt6J7qZTbrZAHBlPtX68EPu/PI8JMCeu3WAQ==}
|
||||||
|
|
||||||
|
'@kevisual/load@0.0.6':
|
||||||
|
resolution: {integrity: sha512-+3YTFehRcZ1haGel5DKYMUwmi5i6f2psyaPZlfkKU/cOXgkpwoG9/BEqPCnPjicKqqnksEpixVRkyHJ+5bjLVA==}
|
||||||
|
|
||||||
|
'@types/node@25.2.0':
|
||||||
|
resolution: {integrity: sha512-DZ8VwRFUNzuqJ5khrvwMXHmvPe+zGayJhr2CDNiKB1WBE1ST8Djl00D0IC4vvNmHMdj6DlbYRIaFE7WHjlDl5w==}
|
||||||
|
|
||||||
|
dotenv@17.2.3:
|
||||||
|
resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
|
||||||
|
eventemitter3@5.0.4:
|
||||||
|
resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==}
|
||||||
|
|
||||||
|
undici-types@7.16.0:
|
||||||
|
resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==}
|
||||||
|
|
||||||
|
snapshots:
|
||||||
|
|
||||||
|
'@kevisual/code-builder@0.0.3': {}
|
||||||
|
|
||||||
|
'@kevisual/context@0.0.4': {}
|
||||||
|
|
||||||
|
'@kevisual/load@0.0.6':
|
||||||
|
dependencies:
|
||||||
|
eventemitter3: 5.0.4
|
||||||
|
|
||||||
|
'@types/node@25.2.0':
|
||||||
|
dependencies:
|
||||||
|
undici-types: 7.16.0
|
||||||
|
|
||||||
|
dotenv@17.2.3: {}
|
||||||
|
|
||||||
|
eventemitter3@5.0.4: {}
|
||||||
|
|
||||||
|
undici-types@7.16.0: {}
|
||||||
284
src/env-config.ts
Normal file
284
src/env-config.ts
Normal file
@@ -0,0 +1,284 @@
|
|||||||
|
export type ConfigEnvItem = {
|
||||||
|
title: string;
|
||||||
|
description?: string;
|
||||||
|
tags?: string[];
|
||||||
|
}
|
||||||
|
export const configEnvList = [
|
||||||
|
// 基础配置
|
||||||
|
{
|
||||||
|
title: 'PORT',
|
||||||
|
description: '服务端口号',
|
||||||
|
tags: ['基础', '服务']
|
||||||
|
},
|
||||||
|
// Redis 配置
|
||||||
|
{
|
||||||
|
title: 'REDIS_HOST',
|
||||||
|
description: 'Redis 服务器地址',
|
||||||
|
tags: ['Redis', '数据库', '缓存']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'REDIS_PORT',
|
||||||
|
description: 'Redis 服务器端口',
|
||||||
|
tags: ['Redis', '数据库', '缓存']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'REDIS_PASSWORD',
|
||||||
|
description: 'Redis 连接密码',
|
||||||
|
tags: ['Redis', '数据库', '缓存', '安全']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'REDIS_VERSION',
|
||||||
|
description: 'Redis 版本号',
|
||||||
|
tags: ['Redis', '数据库', '缓存']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'REDIS_DB',
|
||||||
|
description: 'Redis 数据库索引',
|
||||||
|
tags: ['Redis', '数据库', '缓存']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'REDIS_USER',
|
||||||
|
description: 'Redis 用户名',
|
||||||
|
tags: ['Redis', '数据库', '缓存', '安全']
|
||||||
|
},
|
||||||
|
// PostgreSQL 配置
|
||||||
|
{
|
||||||
|
title: 'POSTGRES_HOST',
|
||||||
|
description: 'PostgreSQL 服务器地址',
|
||||||
|
tags: ['PostgreSQL', '数据库', '关系型数据库']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'POSTGRES_PORT',
|
||||||
|
description: 'PostgreSQL 服务器端口',
|
||||||
|
tags: ['PostgreSQL', '数据库', '关系型数据库']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'POSTGRES_PASSWORD',
|
||||||
|
description: 'PostgreSQL 连接密码',
|
||||||
|
tags: ['PostgreSQL', '数据库', '关系型数据库', '安全']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'POSTGRES_USER',
|
||||||
|
description: 'PostgreSQL 用户名',
|
||||||
|
tags: ['PostgreSQL', '数据库', '关系型数据库', '安全']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'POSTGRES_DB',
|
||||||
|
description: 'PostgreSQL 数据库名称',
|
||||||
|
tags: ['PostgreSQL', '数据库', '关系型数据库']
|
||||||
|
},
|
||||||
|
// MongoDB 配置
|
||||||
|
{
|
||||||
|
title: 'MONGO_URI',
|
||||||
|
description: 'MongoDB 连接字符串',
|
||||||
|
tags: ['MongoDB', '数据库', 'NoSQL']
|
||||||
|
},
|
||||||
|
// Drizzle ORM 配置
|
||||||
|
{
|
||||||
|
title: 'DATABASE_URL',
|
||||||
|
description: '数据库连接 URL(用于 Drizzle ORM)',
|
||||||
|
tags: ['数据库', 'ORM', 'Drizzle', '常用']
|
||||||
|
},
|
||||||
|
// MinIO 配置
|
||||||
|
{
|
||||||
|
title: 'MINIO_ENDPOINT',
|
||||||
|
description: 'MinIO 服务地址',
|
||||||
|
tags: ['MinIO', '对象存储', '存储']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'MINIO_BUCKET_NAME',
|
||||||
|
description: 'MinIO 存储桶名称',
|
||||||
|
tags: ['MinIO', '对象存储', '存储']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'MINIO_ACCESS_KEY',
|
||||||
|
description: 'MinIO 访问密钥',
|
||||||
|
tags: ['MinIO', '对象存储', '存储', '安全']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'MINIO_SECRET_KEY',
|
||||||
|
description: 'MinIO 秘密密钥',
|
||||||
|
tags: ['MinIO', '对象存储', '存储', '安全']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'MINIO_USE_SSL',
|
||||||
|
description: 'MinIO 是否使用 SSL',
|
||||||
|
tags: ['MinIO', '对象存储', '存储', '安全']
|
||||||
|
},
|
||||||
|
// S3 配置
|
||||||
|
{
|
||||||
|
title: 'S3_ACCESS_KEY_ID',
|
||||||
|
description: 'S3 访问密钥 ID',
|
||||||
|
tags: ['S3', '对象存储', '存储', 'AWS', '安全']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'S3_SECRET_ACCESS_KEY',
|
||||||
|
description: 'S3 秘密访问密钥',
|
||||||
|
tags: ['S3', '对象存储', '存储', 'AWS', '安全']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'S3_REGION',
|
||||||
|
description: 'S3 区域',
|
||||||
|
tags: ['S3', '对象存储', '存储', 'AWS']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'S3_BUCKET_NAME',
|
||||||
|
description: 'S3 存储桶名称',
|
||||||
|
tags: ['S3', '对象存储', '存储', 'AWS']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'S3_ENDPOINT',
|
||||||
|
description: 'S3 服务端点',
|
||||||
|
tags: ['S3', '对象存储', '存储', 'AWS']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'S3_FORCE_PATH_STYLE',
|
||||||
|
description: '是否强制路径式访问 S3(MinIO 一般需要开启)',
|
||||||
|
tags: ['S3', '对象存储', '存储', 'AWS']
|
||||||
|
},
|
||||||
|
// KEVISUAL 服务配置
|
||||||
|
{
|
||||||
|
title: 'KEVISUAL_TOKEN',
|
||||||
|
description: 'KEVISUAL 服务认证令牌',
|
||||||
|
tags: ['KEVISUAL', '服务', '安全']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'KEVISUAL_API_URL',
|
||||||
|
description: 'KEVISUAL API 地址',
|
||||||
|
tags: ['KEVISUAL', '服务', 'API']
|
||||||
|
},
|
||||||
|
// AI 配置
|
||||||
|
{
|
||||||
|
title: 'KEVISUAL_NEW_API_KEY',
|
||||||
|
description: 'KEVISUAL AI API 密钥',
|
||||||
|
tags: ['AI', 'KEVISUAL', '安全']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'BAILIAN_API_KEY',
|
||||||
|
description: '百炼 API 密钥',
|
||||||
|
tags: ['AI', '百炼', '安全', '常用']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'ZHIPU_API_KEY',
|
||||||
|
description: '智谱 API 密钥',
|
||||||
|
tags: ['AI', '智谱', '安全', '常用']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'MINIMAX_API_KEY',
|
||||||
|
description: 'MiniMax API 密钥',
|
||||||
|
tags: ['AI', 'MiniMax', '安全', '常用']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'VOLCENGINE_API_KEY',
|
||||||
|
description: '火山引擎 API 密钥',
|
||||||
|
tags: ['AI', '火山引擎', '安全', '常用']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'BAILIAN_CODE_API_KEY',
|
||||||
|
description: '百炼代码规划 API 密钥',
|
||||||
|
tags: ['AI', '百炼', '代码', '安全', '常用']
|
||||||
|
},
|
||||||
|
// 即梦配置
|
||||||
|
{
|
||||||
|
title: 'JIMENG_API_URL',
|
||||||
|
description: '即梦 API 地址',
|
||||||
|
tags: ['即梦', 'API']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'JIMENG_API_KEY',
|
||||||
|
description: '即梦 API 密钥',
|
||||||
|
tags: ['即梦', 'API', '安全', '常用']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'JIMENG_TIMEOUT',
|
||||||
|
description: '即梦 API 超时时间',
|
||||||
|
tags: ['即梦', 'API']
|
||||||
|
},
|
||||||
|
// OpenCode 配置
|
||||||
|
{
|
||||||
|
title: 'OPENCODE_URL',
|
||||||
|
description: 'OpenCode 服务地址',
|
||||||
|
tags: ['OpenCode', '服务', 'API', '常用']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'OPENCODE_API_KEY',
|
||||||
|
description: 'OpenCode API 密钥',
|
||||||
|
tags: ['OpenCode', 'API', '安全', '常用']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'OPENCODE_SERVER_PASSWORD',
|
||||||
|
description: 'OpenCode 服务器密码',
|
||||||
|
tags: ['OpenCode', '服务', '安全']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "OPENCODE_SERVER_USERNAME",
|
||||||
|
description: "OpenCode 服务器用户名",
|
||||||
|
tags: ['OpenCode', '服务', '安全']
|
||||||
|
},
|
||||||
|
// 通知配置
|
||||||
|
{
|
||||||
|
title: 'FEISHU_NOTIFY_WEBHOOK_URL',
|
||||||
|
description: '飞书通知 Webhook 地址',
|
||||||
|
tags: ['通知', '飞书', 'Webhook']
|
||||||
|
},
|
||||||
|
// NocoDB 配置
|
||||||
|
{
|
||||||
|
title: 'NOCODB_URL',
|
||||||
|
description: 'NocoDB 服务地址',
|
||||||
|
tags: ['NocoDB', '数据库', '服务']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'NOCODB_API_KEY',
|
||||||
|
description: 'NocoDB API 密钥',
|
||||||
|
tags: ['NocoDB', '数据库', 'API', '安全']
|
||||||
|
},
|
||||||
|
// MeiliSearch 配置
|
||||||
|
{
|
||||||
|
title: 'MEILISEARCH_URL',
|
||||||
|
description: 'MeiliSearch 服务地址',
|
||||||
|
tags: ['MeiliSearch', '搜索引擎', '服务', '常用']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'MEILISEARCH_API_KEY',
|
||||||
|
description: 'MeiliSearch API 密钥',
|
||||||
|
tags: ['MeiliSearch', '搜索引擎', 'API', '安全', '常用']
|
||||||
|
},
|
||||||
|
// PocketBase 配置
|
||||||
|
{
|
||||||
|
title: 'POCKETBASE_URL',
|
||||||
|
description: 'PocketBase 服务地址',
|
||||||
|
tags: ['PocketBase', '后端', '服务']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'POCKETBASE_TOKEN',
|
||||||
|
description: 'PocketBase 认证令牌',
|
||||||
|
tags: ['PocketBase', '后端', '安全']
|
||||||
|
},
|
||||||
|
// CNB 配置
|
||||||
|
{
|
||||||
|
title: 'CNB_TOKEN',
|
||||||
|
description: 'CNB 认证令牌',
|
||||||
|
tags: ['CNB', 'Cool', '安全', '常用']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'CNB_API_KEY',
|
||||||
|
description: 'CNB API 密钥',
|
||||||
|
tags: ['CNB', 'Cool', 'API', '安全', '常用']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'CNB_COOKIE',
|
||||||
|
description: 'CNB Cookie',
|
||||||
|
tags: ['CNB', 'Cool', '安全', '常用']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'CNB_REPO_SLUG',
|
||||||
|
description: 'CNB 仓库标识',
|
||||||
|
tags: ['CNB', 'Cool']
|
||||||
|
},
|
||||||
|
// Kubernetes 配置
|
||||||
|
{
|
||||||
|
title: 'KUBECONFIG_DATA',
|
||||||
|
description: 'Kubernetes 配置数据',
|
||||||
|
tags: ['Kubernetes', 'K8s', '容器', '部署']
|
||||||
|
}
|
||||||
|
] as const;
|
||||||
92
src/env.ts
92
src/env.ts
@@ -2,80 +2,14 @@ import fs from 'node:fs';
|
|||||||
import path from 'node:path';
|
import path from 'node:path';
|
||||||
import dotenv from 'dotenv';
|
import dotenv from 'dotenv';
|
||||||
import { fileURLToPath } from 'url';
|
import { fileURLToPath } from 'url';
|
||||||
|
import { configEnvList } from './env-config.ts';
|
||||||
|
|
||||||
|
// 从 configEnvList 推断配置键名
|
||||||
|
type ConfigKeys = typeof configEnvList[number]['title'];
|
||||||
|
|
||||||
// 配置类型
|
// 配置类型
|
||||||
export type Config<T = {}> = {
|
export type Config<T = {}> = {
|
||||||
PORT?: string;
|
[K in ConfigKeys]?: string;
|
||||||
// redis
|
|
||||||
REDIS_HOST?: string;
|
|
||||||
REDIS_PORT?: string;
|
|
||||||
REDIS_PASSWORD?: string;
|
|
||||||
REDIS_VERSION?: string;
|
|
||||||
REDIS_DB?: string;
|
|
||||||
REDIS_USER?: string;
|
|
||||||
// postgres
|
|
||||||
POSTGRES_HOST?: string;
|
|
||||||
POSTGRES_PORT?: string;
|
|
||||||
POSTGRES_PASSWORD?: string;
|
|
||||||
POSTGRES_USER?: string;
|
|
||||||
POSTGRES_DB?: string;
|
|
||||||
// mongo
|
|
||||||
MONGO_URI?: string;
|
|
||||||
// DB: for drizzleorm
|
|
||||||
DATABASE_URL?: string;
|
|
||||||
|
|
||||||
// minio
|
|
||||||
MINIO_ENDPOINT?: string;
|
|
||||||
MINIO_BUCKET_NAME?: string;
|
|
||||||
MINIO_ACCESS_KEY?: string;
|
|
||||||
MINIO_SECRET_KEY?: string;
|
|
||||||
MINIO_USE_SSL?: string;
|
|
||||||
// s3
|
|
||||||
S3_ACCESS_KEY_ID?: string;
|
|
||||||
S3_SECRET_ACCESS_KEY?: string;
|
|
||||||
S3_REGION?: string;
|
|
||||||
S3_BUCKET_NAME?: string;
|
|
||||||
S3_ENDPOINT?: string;
|
|
||||||
S3_FORCE_PATH_STYLE?: string;
|
|
||||||
|
|
||||||
// KEVISUAL 服务相关
|
|
||||||
KEVISUAL_TOKEN?: string;
|
|
||||||
KEVISUAL_API_URL?: string;
|
|
||||||
|
|
||||||
// AI
|
|
||||||
KEVISUAL_NEW_API?: string;
|
|
||||||
BAILIAN_API_KEY?: string;
|
|
||||||
ZHIPU_API_KEY?: string;
|
|
||||||
MINIMAX_API_KEY?: string;
|
|
||||||
DOUBAO_API_KEY?: string;
|
|
||||||
|
|
||||||
JIMENG_API_URL?: string;
|
|
||||||
JIMENG_API_KEY?: string;
|
|
||||||
JIMENG_TIMEOUT?: string;
|
|
||||||
|
|
||||||
OPENCODE_URL?: string;
|
|
||||||
OPENCODE_API_KEY?: string;
|
|
||||||
|
|
||||||
// ## Notify
|
|
||||||
FEISHU_NOTIFY_WEBHOOK_URL?: string;
|
|
||||||
|
|
||||||
// NOCODEB
|
|
||||||
NOCODB_URL?: string;
|
|
||||||
NOCODB_API_KEY?: string;
|
|
||||||
|
|
||||||
// MEILISEARCH
|
|
||||||
MEILISEARCH_URL?: string;
|
|
||||||
MEILISEARCH_API_KEY?: string
|
|
||||||
|
|
||||||
// PocketBase
|
|
||||||
POCKETBASE_URL?: string;
|
|
||||||
POCKETBASE_TOKEN?: string;
|
|
||||||
|
|
||||||
CNB_TOKEN?: string;
|
|
||||||
CNB_COOKIE?: string;
|
|
||||||
|
|
||||||
KUBECONFIG_DATA?: string;
|
|
||||||
// 其他自定义配置
|
|
||||||
} & T;
|
} & T;
|
||||||
export const initConfig: Config = {
|
export const initConfig: Config = {
|
||||||
PORT: '3000',
|
PORT: '3000',
|
||||||
@@ -224,7 +158,7 @@ export const useKey = <T = {}>(key: keyof Config<T>, opts?: { defaultValue?: str
|
|||||||
v = process.env[key];
|
v = process.env[key];
|
||||||
}
|
}
|
||||||
if (!v) {
|
if (!v) {
|
||||||
return opts?.defaultValue || null;
|
return opts?.defaultValue || '';
|
||||||
}
|
}
|
||||||
if (opts?.isNumber && typeof v === 'string') {
|
if (opts?.isNumber && typeof v === 'string') {
|
||||||
return Number(v);
|
return Number(v);
|
||||||
@@ -235,6 +169,20 @@ export const useKey = <T = {}>(key: keyof Config<T>, opts?: { defaultValue?: str
|
|||||||
return v;
|
return v;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const useValue = <T = {}>(key: keyof Config<T>, values: any, opts?: { defaultValue?: string; isNumber?: boolean; isBoolean?: boolean }): string | number | boolean => {
|
||||||
|
let v = values[key as string];
|
||||||
|
if (!v) {
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
if (opts?.isNumber && typeof v === 'string') {
|
||||||
|
return Number(v);
|
||||||
|
}
|
||||||
|
if (opts?.isBoolean && typeof v === 'string') {
|
||||||
|
return v === 'true';
|
||||||
|
}
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 写入json配置文件
|
* 写入json配置文件
|
||||||
* @param config 配置
|
* @param config 配置
|
||||||
|
|||||||
Reference in New Issue
Block a user