remove redundancy in node.config schema keys
还没有人认领这个 Issue。
- 主要语言
- JavaScript
- 星标
- 122k
- 派生
- 37.4k
- 平均合并
- 4 天 3 小时
- 30 天内合并 PR
- 272
描述
What is the problem this feature will solve?
Notice below how in the current schema, the namespaces "test" and "watch" are redundantly specified. This is the result of mapping the CLI args as-is.
{
"$schema": "https://nodejs.org/dist/vX.Y.Z/docs/node-config-schema.json",
"test": {
"test-concurrency": 3
"test-isolation": "process"
"test-timeout": 5000
"test-rerun-failures": true
"test-only": true
"test-force-exit": false
"test-name-pattern": "^iso"
"test-skip-pattern": "tree$"
"test-global-setup": "setup-module.mjs"
"experimental-test-coverage": true
"test-coverage-exclude": "test/**"
"test-coverage-include": "src/**"
"test-coverage-branches": 100
"test-coverage-functions": 100
"test-coverage-lines": 100
"test-reporter": ["dot", "spec", "lcov"]
"test-reporter-destination": ["stdout", "test.report", "lcov.info"]
"experimental-test-module-mocks": true
"test-update-snapshots": true
},
"watch": {
"watch-preserve-output": true
"watch-path": "./src"
}
}
What is the feature you are proposing to solve the problem?
Instead, the namespace part of the CLI arg could automatically be mapped to a namespace within the config schema:
{
"$schema": "https://nodejs.org/dist/vX.Y.Z/docs/node-config-schema.json",
"test": {
"concurrency": 3
"isolation": "process"
"timeout": 5000
"rerun-failures": true
"only": true
"force-exit": false
"name-pattern": "^iso"
"skip-pattern": "tree$"
"global-setup": "setup-module.mjs"
"experimental-coverage": true
"coverage-exclude": "test/**"
"coverage-include": "src/**"
"coverage-branches": 100
"coverage-functions": 100
"coverage-lines": 100
"reporter": ["dot", "spec", "lcov"]
"reporter-destination": ["stdout", "test.report", "lcov.info"]
"experimental-module-mocks": true
"test-update-snapshots": true
},
"watch": {
"preserve-output": true
"path": "./src"
}
}
Note that for "experimental-" CLI args, the mapped namespace occurs after that prefix.
We can take it a step further, apply the idea recursively, as below. This has the added of benefit fixing how destinations are specified when there are multiple test reporters.
{
"$schema": "https://nodejs.org/dist/vX.Y.Z/docs/node-config-schema.json",
"test": {
"concurrency": 3
"isolation": "process"
"timeout": 5000
"rerun-failures": true
"only": true
"force-exit": false
"name-pattern": "^iso"
"skip-pattern": "tree$"
"global-setup": "setup-module.mjs"
"experimental-coverage": {
"exclude": "test/**"
"include": "src/**"
"branches": 100
"functions": 100
"lines": 100
}
"reporter": {
"dot": {"destination": "stdout"}
"spec": {"destination": "test.report"}
"lcov": {"destination": "lcov.info"}
}
"experimental-module-mocks": true
"update-snapshots": true
},
"watch": {
"preserve-output": true
"path": "./src"
}
}
What alternatives have you considered?
No response
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
首先追踪 Node 的 CLI 参数到 config schema 的映射,并比较当前 test 和 watch 键的生成方式。Issue 中的示例定义了预期结果:应移除 namespace 前缀,在其前缀之后处理 experimental 选项,并递归映射嵌套的 reporter 目标。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- javascript, node.js
- 领域
- cli, developer-experience
- Issue 类型
- 功能
- 难度
- 5/5
- 预计耗时
- 一周以上
- 活跃度
- 活跃
- 描述清晰度
- 基本清楚
- 新手友好度
- 42/100