@wwkit/shared

v1.0.5

Published

Shared utilities for @wwkit packages — config loader, platform detection

Readme

@wwkit/shared

Shared utilities for @wwkit packages.

config-loader

多层配置加载器:内置 config.json5 + 环境变量注入内容 + 用户 config.json5 合并(用户优先)。

默认行为(无需配置)

  • 深合并deepMerge),嵌套配置只覆盖用户改写的字段,保留其余默认
  • 结果默认解析 {env:XXX} 占位符(安全实践:密钥用环境变量引用,不落盘明文)

可选层(通过选项开启)

  • envContentVar:指定环境变量名,其内容作为"注入配置"这一层参与合并(同样走深合并+占位符解析)
  • envDirVar:指定环境变量名,其值覆盖用户配置目录
import { createConfigLoader, getXdgConfigDir } from '@wwkit/shared'

const loader = createConfigLoader({
  builtinConfigPath: path.join(__dirname, 'config.json5'),
  userConfigDir: getXdgConfigDir('cft'),
  envContentVar: 'MY_CONFIG_CONTENT',   // 可选
  envDirVar: 'MY_CONFIG_DIR',           // 可选
})

loader.copyBuiltinConfig()  // 复制内置→用户目录(不覆盖已存在)
const cfg = loader.getConfig()  // 深合并 + 占位符解析

导出的工具函数

  • deepMerge(base, override) — 深合并(嵌套对象合并,数组/标量覆盖)
  • resolveEnvVars(value, env?) — 递归解析 {env:XXX} 占位符
  • getXdgConfigDir(subdir)~/.config/<subdir>$XDG_CONFIG_HOME/<subdir>