mirror of
https://github.com/jfmengels/elm-review.git
synced 2024-12-23 17:53:35 +03:00
89 lines
5.4 KiB
Markdown
89 lines
5.4 KiB
Markdown
# Migration from v1 to v2
|
|
|
|
## I CAN'T RUN ELM-REVIEW V1 ANYMORE!
|
|
|
|
If you are trying to run v1 of the `elm-review` CLI and it suddenly stopped working, I am very sorry about that!
|
|
|
|
Fortunately, there is an easy fix: updating the CLI to version `1.0.2`.
|
|
|
|
```
|
|
npm install -D elm-review@1.0.2
|
|
```
|
|
|
|
The problem is that previous versions try to build an application behind the scenes, and installs the `jfmengels/elm-review` package every time.
|
|
Those versions were not saying **which** version of `jfmengels/elm-review` to use though, due to limitations of what `elm install` offered and `elm-json` offered at the time.
|
|
|
|
And now that v2 has been released, well it may well try to install a version of `jfmengels/elm-review` that doesn't work for your project.
|
|
|
|
But `elm-json`'s author @zwilias was very responsive to this need, and version `1.0.2` now installs `jfmengels/elm-review` `1.0.0 <= x < 2.0.0`. So kudos to him!
|
|
|
|
## Rule writing
|
|
|
|
|
|
The API for the rules you created in v1 is pretty much the same in v2.
|
|
|
|
The differences are mostly functions and types that were renamed, and a single argument somewhere to add.
|
|
|
|
You fortunately won't have to change anything in the logic of your rule or tests.
|
|
|
|
- [`newSchema`] is renamed to [`newModuleRuleSchema`]. It now takes the initial context as a new argument. If you were using [`withInitialContext`], then you should use that function's value, otherwise you can use `()`.
|
|
- [`fromSchema`] is renamed to [`fromModuleRuleSchema`]
|
|
- [`withInitialContext`] has been removed, since the initial context is now supplied by [`newModuleRuleSchema`]
|
|
- [`withFixes`] has been removed. If you now want to add fixes to an error, use `errorWithFix` instead of error.
|
|
- The [`Error`] type now has a type variable. You can replace all `Error` by `Error {}`
|
|
- [`Schema`] has been renamed to [`ModuleRuleSchema`]
|
|
|
|
There are a lot of other API changes not related to creating rules, which are related to making everything work for the CLI. I am not going to describe these here because it's unlikely that someonetiuched that. If I am wrong about this and you did depend on these APIs, come talk to me or open an issue.
|
|
|
|
## Review configuration
|
|
|
|
### Folder structure change
|
|
|
|
The default folder structure has been updated, therefore I recommend removing your `review/` folder (at least the `ReviewConfig.elm` and `elm.json`) then running `elm-review init`. Then you can copy paste what you had in your previous ReviewConfig into the new one.
|
|
|
|
In practice, you should be able to have a very similar configuration, but the following sections might make you change a few things.
|
|
|
|
### Tests now included by default
|
|
|
|
If you were running `elm-review` with arguments, I recommend removing them and to see if that works out.
|
|
|
|
The `tests/` directory is now included by default, so you might get errors from that. To ignore these errors for the moment, you can change the arguments to `elm-review`, or use [`Rule.ignoreErrorsForDirectories`]. I recommend having your tests reviewed after the migration phase.
|
|
|
|
### Rule changes
|
|
|
|
Here are the changes for the review packages from `jfmengels`.
|
|
|
|
#### [jfmengels/review-debug]
|
|
|
|
The [`NoDebug`] rule is split into NoDebug.Log and NoDebug.TodoOrToString. Just remove the former and add the latter two rules to have the same.
|
|
|
|
#### [jfmengels/review-unused]
|
|
|
|
[`NoUnused.CustomTypeConstructors`] now takes an argument, which you can replace by `[]`.
|
|
|
|
Notice that both [`NoUnused.Variables`] and [`NoUnused.CustomTypeConstructors`] can report new errors though, so you might need to fix the errors or to disable the rule temporarily.
|
|
|
|
There are now a lot of new rules that you can pick up from, so go check those out!
|
|
|
|
[`Schema`]: https://package.elm-lang.org/packages/jfmengels/elm-review/1.0.0/Review-Rule#Schema
|
|
[`newSchema`]: https://package.elm-lang.org/packages/jfmengels/elm-review/1.0.0/Review-Rule#newSchema
|
|
[`fromSchema`]: https://package.elm-lang.org/packages/jfmengels/elm-review/1.0.0/Review-Rule#fromSchema
|
|
[`withInitialContext`]: https://package.elm-lang.org/packages/jfmengels/elm-review/1.0.0/Review-Rule#withInitialContext
|
|
[`withFixes`]: https://package.elm-lang.org/packages/jfmengels/elm-review/1.0.0/Review-Rule#withFixes
|
|
|
|
[`ModuleRuleSchema`]: https://package.elm-lang.org/packages/jfmengels/elm-review/2.0.0/Review-Rule#ModuleRuleSchema
|
|
[`newModuleRuleSchema`]: https://package.elm-lang.org/packages/jfmengels/elm-review/2.0.0/Review-Rule#newModuleRuleSchema
|
|
[`fromModuleRuleSchema`]: https://package.elm-lang.org/packages/jfmengels/elm-review/2.0.0/Review-Rule#fromModuleRuleSchema
|
|
[`Error`]: https://package.elm-lang.org/packages/jfmengels/elm-review/2.0.0/Review-Rule#Error
|
|
[`error`]: https://package.elm-lang.org/packages/jfmengels/elm-review/2.0.0/Review-Rule#error
|
|
[`errorWithFix`]: https://package.elm-lang.org/packages/jfmengels/elm-review/2.0.0/Review-Rule#errorWithFix
|
|
[`Rule.ignoreErrorsForDirectories`]: https://package.elm-lang.org/packages/jfmengels/elm-review/2.0.0/Review-Rule#ignoreErrorsForDirectories
|
|
|
|
|
|
[jfmengels/review-debug]: https://package.elm-lang.org/packages/jfmengels/review-debug/2.0.0/
|
|
[`NoDebug`]: https://package.elm-lang.org/packages/jfmengels/review-debug/1.0.0/NoDebug
|
|
|
|
[jfmengels/review-unused]: https://package.elm-lang.org/packages/jfmengels/review-unused/2.0.0/
|
|
[`NoUnused.Variables`]: https://package.elm-lang.org/packages/jfmengels/review-unused/2.0.0/NoUnused-Variables
|
|
[`NoUnused.CustomTypeConstructors`]: https://package.elm-lang.org/packages/jfmengels/review-unused/2.0.0/NoUnused-CustomTypeConstructors
|