Feature request: Qualified subdirectories (directory-based module namespaces)
維護者通常 1 天內回覆
還沒有人認領這個 Issue。
評估
- 難度
- 5/5
- 預估耗時
- 一週以上
- 新手友好度
- 35/100
- Issue 類型
- 功能
- 描述清晰度
- 基本清楚
- 活躍度
- 活躍
- 技術堆疊
- ocaml
- 領域
- compilers
研究方向
Read the existing recursive source scanning behavior described in the issue and the related proposals #1974, #1805, and #2459. The issue does not name implementation files or tests; first locate where subdirs: true is handled in the compiler and review its module naming rules. Done means an opt-in qualified mode supports the shown directory hierarchy and duplicate filenames while preserving the default behavior.
由索引模型根據 Issue 內容生成。
描述
Feature request: Qualified subdirectories (directory-based module namespaces)
Hi! I've been using ReScript a bit in my free time recently, and have been really enjoying it. However I've found it quite difficult/frustrating to organize code/packages using ReScript's existing tooling (even when using the "monorepo" features).
I'd like to propose an opt-in feature similar to Dune's (include_subdirs qualified), where source directories automatically become part of the ReScript module hierarchy.
For example, given:
src/
App.res
Components/
Button.res
Input.res
Admin/
Button.res
App.res could reference Components.Button, Components.Input, and Admin.Button.
This would provide two benefits:
- Better code organization: Module hierarchies could mirror the filesystem without manually creating wrapper modules.
- Duplicate filenames: Files such as
Components/Button.resandAdmin/Button.rescould coexist without module-name collisions.
Currently, recursive source scanning (subdirs: true) places all files in a flat module namespace.
Ideally, this would be an opt-in configuration (perhaps subdirs: "qualified"), preserving existing behavior by default. Directory modules could be implemented using compile-time aliases, without introducing additional JavaScript runtime wrappers.
Related issues
- [#1974 — Allow duplicate filenames / path-derived module names](https://github.com/rescript-lang/rescript/issues/1974): Closely related proposal, including examples like
Pages__Index. - [#1805 — Namespace proposal](https://github.com/rescript-lang/rescript/issues/1805): Earlier work on package-level namespaces.
- [#2459 — Recursive subdirectory scanning](https://github.com/rescript-lang/rescript/issues/2459): Related source-discovery functionality, but without directory qualification.
References
Thanks!
Ethan
- 主要語言
- OCaml
- 星號
- 7.5k
- 分支
- 483
- 平均合併
- 19 小時 35 分鐘
- 30 天內合併 PR
- 208
環境準備
在瀏覽器裡用你自己的 GitHub 帳號啟動這個專案的開發容器。
- 沒有 Dockerfile 或 Docker Compose 檔案
- 有 Pull Request 範本
- 閱讀貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
rescript-lang/rescript 的其他 Issue
-
難度 2/5 1-3 小時 新手友好度 75/100
rescript-lang/rescript#9037 ·
維護者通常 1 天內回覆
-
Per-constructor @unboxed is not compared across interfaces or coercions可能已有人在做 @cknitt 今天認領。 未關閉
難度 4/5 3-5 天 新手友好度 25/100
rescript-lang/rescript#9038 ·
維護者通常 1 天內回覆
-
難度 3/5 1-2 天 新手友好度 70/100
rescript-lang/rescript#8997 ·
維護者通常 1 天內回覆
-
難度 3/5 1-2 天 新手友好度 68/100
rescript-lang/rescript#8994 ·
維護者通常 1 天內回覆
-
@notUndefined in an interface is not checked against the implementation可能已有人在做 關聯的 PR 仍在進行中或已合併。 未關閉
難度 4/5 3-5 天 新手友好度 35/100
rescript-lang/rescript#8964 · 1 則留言 ·
維護者通常 1 天內回覆
查看 rescript-lang/rescript 的全部 Issue
相似的 Issue
-
area:codegen backend:cuda backend:hip bug direction:input
難度 2/5 1-3 小時 新手友好度 78/100
CrossGL/crosstl#3061 · 1 則留言 ·
維護者通常 1 天內回覆
-
bug
難度 2/5 1-3 小時 新手友好度 85/100
-
難度 2/5 1-3 小時 新手友好度 78/100
-
build
難度 2/5 1-3 小時 新手友好度 65/100
AOMediaCodec/SVT-AV1#2500 ·
-
SIGSEGV in symex on __builtin_constant_p of a void expression可能已有人在做 關聯的 PR 仍在進行中或已合併。 未關閉bug goto-symex
難度 2/5 1-3 小時 新手友好度 83/100
維護者通常 1 天內回覆