Feature request: Qualified subdirectories (directory-based module namespaces)
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 35/100
- Type d'issue
- Fonctionnalité
- Clarté
- Plutôt claire
- Activité
- Active
- Stack technique
- ocaml
- Domaine
- compilers
Piste de recherche
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.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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
- Langage dominant
- OCaml
- Étoiles
- 7.5k
- Forks
- 483
- Merge moyen
- 20 h
- PR mergées (30 j)
- 219
Préparer son environnement
Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de rescript-lang/rescript
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
rescript-lang/rescript#9037 ·
Les mainteneurs répondent en général sous 1 jour
-
RFC: Temporal API bindingsOuverte
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 12/100
rescript-lang/rescript#9044 · 2 réactions ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 3/5 1-2 jours Accessibilité débutants 70/100
rescript-lang/rescript#8997 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 3/5 1-2 jours Accessibilité débutants 68/100
rescript-lang/rescript#8994 ·
Les mainteneurs répondent en général sous 1 jour
-
Have formatter insert newlines around multi-line expressionsPeut-être pris @rolandpeelen l’a pris il y a 4 jours. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 25/100
rescript-lang/rescript#8960 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de rescript-lang/rescript
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 73/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour
-
Recover inside a parameter listOuverteenhancement scope:diagnostics scope:syntax
Difficulté 2/5 1-3 heures Accessibilité débutants 77/100
-
code: refactoring good first issue
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
idris-lang/Idris2#3887 ·
Les mainteneurs répondent en général sous 1 jour
-
luaebpf: a write to a field of a table the body built is refused as an assignment to a globalOuverteseverity: low
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
luainkernel/lunatik#2207 ·
Les mainteneurs répondent en général sous 1 jour