@composy/config-vue

Vue 3 adapter for LDesign configuration
Install
npm install @composy/config-vue
Latest Version:0.0.2
Vue:3
License:MIT
Last Updated:Oct 12, 2026
Links: Gitee  ·  npm
Maintainer: swimly

@composy/config-vue

审计增强摘要

  • 默认每个 Vue App 使用独立的 manager;显式传入 manager 时才共享,且外部 manager 不会由插件销毁。
  • App 卸载时自动恢复插件持有的 $ldesignConfig/$config,并支持 globalPropertyConflict: 'override' 显式覆盖宿主属性。
  • 如果宿主 App 在注入阶段抛错,插件会回滚全局属性并销毁插件拥有的 manager;显式传入的外部 manager 不会被误销毁。
  • composable 订阅绑定 Vue scope 生命周期,避免组件销毁后残留监听器;其余校验、持久化和错误隔离语义与 core 保持一致。

@composy/config-core 的 Vue 3 适配包。它不重复实现配置管理,只把 core 的 ConfigManager 接入 Vue 的 plugin、provide/inject 与 composables。

能力

  • createConfigVuePlugin():安装配置 manager,并注入 $ldesignConfig。
  • useConfig():读取、写入、派生更新单个配置项。
  • useAllConfig():响应式读取完整配置快照。
  • useConfigBatch():复用 core 的 batch()、update() 和合并策略。
  • useConfigHistory()、useConfigStats()、useConfigVersion():读取运行状态。
  • useConfigPersistence()、useConfigValidator():封装持久化和校验场景。
  • 共享 runtime bridge:一个 ConfigManager 在有 Vue 订阅者时才注册一次 core listener,最后一个订阅者释放后自动解绑。

安装

pnpm add @composy/config-vue @composy/config-core vue

Vue Plugin

import { createApp } from 'vue'
import { createConfigVuePlugin } from '@composy/config-vue'

const app = createApp(App)

app.use(createConfigVuePlugin({
  initial: {
    api: { timeout: 5000 },
    ui: { theme: 'light' },
  },
  maxHistorySize: 50,
}))

复用已有 manager:

import { ConfigManager } from '@composy/config-core'
import { createConfigVuePlugin } from '@composy/config-vue'

const manager = new ConfigManager({
  initial: { ui: { theme: 'light' } },
})

app.use(createConfigVuePlugin({ manager }))

Composable

import { useConfig } from '@composy/config-vue'

const theme = useConfig<'light' | 'dark'>('ui.theme', 'light')

theme.set('dark')

theme.update(value => value === 'dark' ? 'light' : 'dark')

批量更新:

import { useConfigBatch } from '@composy/config-vue'

const configBatch = useConfigBatch()

configBatch.batchUpdate({
  'api.retry': value => Number(value ?? 0) + 1,
  'ui.density': () => 'compact',
})

适配边界

  • 新增核心配置能力时,先在 @composy/config-core 实现。
  • Vue 侧只负责响应式值、生命周期、注入和 Engine/Vue plugin 兼容。
  • 不在 composable 中直接复制路径、合并、历史或校验算法。
  • 若新增 composable,需要优先复用 useConfigRuntime(),避免每个 composable 都直接监听 manager。

构建与验证

本包固定使用 @composy/builder 的 rolldown bundler,并将 vue 与 @composy/config-core 作为运行时外部依赖。build 会生成 dist/(UMD 与真实压缩的 index.min.js)、es/(ESM 与声明)、esm/(保留模块结构的 ESM)和 lib/(CommonJS 与声明);随后归一化声明文件和 lib/package.json。

pnpm --dir packages/config/packages/vue run typecheck
pnpm --dir packages/config/packages/vue run lint:check
pnpm --dir packages/config/packages/vue run test:run
pnpm --dir packages/config/packages/vue run build

# 检查 package.json 全部入口是否有对应产物
node --experimental-strip-types scripts/index.ts workspace:check-package-outputs --cwd packages/config --target vue

本包 ESLint 与 TypeScript 的权威配置位于 .ldesign/;包根配置文件仅作为兼容 shim。

Related Packages

@vasakgroup/plugin-config-manager

A tauri plugin for managing configuration in a Vue 3 application using Pinia.

7,443 0
vue-define

Manage environment variables & configurations in Vue application.

1,049 0
@jojomatik/nuxt-bundle

A bundle of commonly used nuxt dependencies and configuration.

4,490 2

Version History

Version Released Vue License
0.0.2 3.5.32 MIT
0.0.1 ^3.5.32 MIT