mcpField
A
add-setting-env

add-setting-env

github.com/lobehub開発83.6k4.2k 回インストール今日更新
リポジトリ

add-setting-env について

ユーザー設定のデフォルト値となるサーバー側環境変数の追加ガイドです。変数の検証、型定義、グローバル設定の組み立て、ストアへの反映、ドキュメント更新を扱います。

主な機能

  1. 01環境変数の定義と検証
  2. 02サーバー設定型の追加または再利用
  3. 03グローバルサーバー設定の組み立て
  4. 04デフォルト値のユーザーストアへの反映
  5. 05サンプルとセルフホスト文書の更新

活用シーン

  1. 01ユーザー設定にサーバー側のデフォルト値を設定
  2. 02新しい領域に設定項目を追加
  3. 03環境変数のデプロイ手順を文書化

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/lobehub/lobehub --skill add-setting-env

インストール後、Claude Code で/add-setting-envを入力して読み込まれたか確認します。

同梱ファイルagents/openai.yaml

詳細

ユーザー設定用の環境変数を追加する

ユーザー設定のデフォルト値を設定するために、サーバー側の環境変数を追加します。

優先順位:ユーザーによるカスタマイズ > サーバー環境変数 > ハードコードされたデフォルト値

手順

1. 環境変数を定義する

packages/env/src/<domain>.ts を作成します(インポートパスは @/envs/<domain> のままにします。tsconfig は最初に packages/env/src/* にマッピングします)。

import { createEnv } from '@t3-oss/env-core';
import { z } from 'zod';

export const get<Domain>Config = () => {
  return createEnv({
    server: {
      YOUR_ENV_VAR: z.coerce.number().min(MIN).max(MAX).optional(),
    },
    runtimeEnv: {
      YOUR_ENV_VAR: process.env.YOUR_ENV_VAR,
    },
  });
};

export const <domain>Env = get<Domain>Config();
2. 型を更新する(新しいドメインの場合)

packages/types/src/serverConfig.ts に追加します。

import { User<Domain>Config } from './user/settings';

export interface GlobalServerConfig {
  <domain>?: PartialDeep<User<Domain>Config>;
}

既存の型の再利用を優先してください(packages/types/src/user/settings)。

3. サーバー設定を組み立てる(新しいドメインの場合)

apps/server/src/globalConfig/index.ts で作業します。

import { <domain>Env } from '@/envs/<domain>';

export const getServerGlobalConfig = async () => {
  const config: GlobalServerConfig = {
    <domain>: cleanObject({
      <settingName>: <domain>Env.YOUR_ENV_VAR,
    }),
  };
  return config;
};
4. ユーザーストアにマージする(新しいドメインの場合)

src/store/user/slices/common/action.ts で作業します。

const serverSettings: PartialDeep<UserSettings> = {
  <domain>: serverConfig.<domain>,
};
5. .env.example を更新する
# <Description> (range/options, default: X)
# YOUR_ENV_VAR=<example>
6. ドキュメントを更新する
  • docs/self-hosting/environment-variables/basic.mdx(英語)
  • docs/self-hosting/environment-variables/basic.zh-CN.mdx(中国語)

例:AI_IMAGE_DEFAULT_IMAGE_NUM

// packages/env/src/image.ts  (import as @/envs/image)
AI_IMAGE_DEFAULT_IMAGE_NUM: z.coerce.number().min(1).max(20).optional(),

// packages/types/src/serverConfig.ts
image?: PartialDeep<UserImageConfig>;

// apps/server/src/globalConfig/index.ts
image: cleanObject({ defaultImageNum: imageEnv.AI_IMAGE_DEFAULT_IMAGE_NUM }),

// src/store/user/slices/common/action.ts
image: serverConfig.image,

// .env.example
# AI_IMAGE_DEFAULT_IMAGE_NUM=4

コメント