https://github.com/mdgriffith/elm-dev
https://github.com/mdgriffith/elm-dev
Last synced: 12 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/mdgriffith/elm-dev
- Owner: mdgriffith
- License: bsd-3-clause
- Created: 2021-02-14T17:23:19.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2025-06-24T12:10:23.000Z (12 months ago)
- Last Synced: 2025-06-26T14:17:12.256Z (12 months ago)
- Language: Haskell
- Size: 11.7 MB
- Stars: 24
- Watchers: 5
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Roadmap: roadmap.md
Awesome Lists containing this project
README
# Elm Dev
Elm Dev is a version of the Elm compiler that is made to support editing tools.
Not to be confused with Elm itself which lives here: https://elm-lang.org/
This package is for toolmakers, so if you're just starting out using Elm, you likely don't need this tool directly.
Install via `npm install -g elm-dev` if you want to play with it. It's currently experimental, but will likely be stable soon.
Currently this is a command line tool with the following commands that print or output JSON.
- `warnings` - List missing type signatures and unused values.
- `entrypoints` - Detect what `.elm` files are the potential roots of a project. This will also report any ports relevant to a specific entrypoint as well as the type signatures of those ports.
- `docs` - Generate `docs.json` for any package, or any local `.elm` file.
- `imports` - Given a list of modules, report all files and packages that they collectively depends on. This is useful for
- `usage` - Given a module, return all usages of that module in a given project.
- `explain` - Given a fully qualified type name, provide it's full definition.
Each command may instead report compilation errors if the file or project fails to compile.
## Roadmap
The above functionality is a first pass on what would be useful for `elm-dev` to report and has been published to allow downstream projects to try stuff out.
In the medium term, the intention is to support the language-server protocol and to adjust functionaltiy based on downstream projects.