Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Add top-level config ref

未关闭
#99 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
25/100
Issue 类型
功能
描述清晰度
需要澄清
活跃度
停滞
技术栈
typescript
领域
tooling

调研方向

Issue 中没有指定文件、测试或入口点。首先检查现有 schema 和 config 解析行为,然后明确顶层 $ref 继承、属性覆盖以及 Pick/Omit 应如何交互。完成的标准是:已指定受支持的语义和边界情况,并通过测试覆盖。

由索引模型根据 Issue 内容生成。

描述

enhancement

Is your feature request related to a problem? Please describe.
We at Vector team deploy the same service with 99% the same config for different projects (e.g. Metatile-Queue-Populator/ Retiler). The only difference might be the queue which I'm subscribing to or DB name/ S3 Bucket/ directory in a S3 bucket. Currently, I'll have to create config-per-instance and maintain each one of them (which will result in duplicate config - in the current state of schema and service).
I also expect that I would be able to override properties from the shared config.

Describe the solution you'd like
I would like to be able to top-level $ref a "shared" config in the specific project config's and inherit it's config and override the properties which are project-specific.

Describe alternatives you've considered
Change the schema (again).

Additional context
This will enable us to create ts-server-boilerplate shared config and many more copy-paste config
An example

// shared schema
{                
    "foo": {
        "type": "string"
    },        
    "bar": {
        "type": "string"
    }
}

// shared config
{
    "foo": "avi1",
    "bar": "avi2"
}

// "full" schema
{
    "$ref": "#/ref/to/shared/schema",
    "baz": {
        "type": "string"
    }
}
// => which results to
{
    "foo": {
        "type": "string"
    },
    "bar": {
        "type": "string"
    },
    "baz": {
        "type": "string"
    }
}

// "full" config
{
    "$ref": "#/ref/to/shared/config",
    "baz": "avi3"
}
// => which results to 
{
    "foo": "avi1",
    "bar": "avi2",
    "baz": "avi3"
}

//another valid edge-case option
{
    "$ref": "#/ref/to/shared/config",
    "foo": "avi420"  
    "baz": "avi3"
}
// => which results to 
{
    "foo": "avi420",
    "bar": "avi2",
    "baz": "avi3"
}

Points to consider:
I think we should also have Pick-Omit $ref support in order to, as you probably already guessed, pick a config value/ omit one.

主要语言
TypeScript
星标
0
派生
0
PR 合并指标
30 天内没有已合并 PR

环境准备

我们还没有检查这个项目的环境配置文件。先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

MapColonies/config-server 的其他 Issue

查看 MapColonies/config-server 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。