Skip to content

Commit 2a67bbe

Browse files
committed
feature: @putout/plugin-react-router: v8-apply-react-router-dom
1 parent 341d5a7 commit 2a67bbe

9 files changed

Lines changed: 59 additions & 3 deletions

File tree

packages/plugin-react-router/README.md

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ npm i putout @putout/plugin-react-router -D
1717
-[v6-convert-component-to-element](#v6-convert-component-to-element);
1818
-[v7-split-multi-segment-route](#v7-split-multi-segment-route);
1919
-[v7-remove-useless-server](#v7-remove-useless-server);
20+
-[v8-apply-react-router-dom](#v8-apply-react-router-dom);
2021

2122
## Config
2223

@@ -26,13 +27,14 @@ npm i putout @putout/plugin-react-router -D
2627
"react-router/v6-convert-switch-to-routers": "on",
2728
"react-router/v6-convert-component-to-element": "on",
2829
"react-router/v7-split-multi-segment-route": "on",
29-
"react-router/v7-remove-useless-server": "on"
30+
"react-router/v7-remove-useless-server": "on",
31+
"react-router/v8-apply-react-router-dom": "on"
3032
},
3133
"plugins": ["react-router"]
3234
}
3335
```
3436

35-
## convert-switch-to-routes
37+
## v6-convert-switch-to-routes
3638

3739
`ReactRouter v6` [uses `Routers` instead of `Switch`](https://reactrouter.com/en/6.6.2/components/routes#routes). Check out in 🐊[Putout Editor](https://putout.cloudcmd.io/#/gist/2030cd7141bf5f02bef896b19b9400ea/a1364326157c85b9e8fa33b6c87cb77ca5a2792f).
3840

@@ -62,7 +64,7 @@ const routes = () => (
6264
);
6365
```
6466

65-
## convert-component-to-element
67+
## v6-convert-component-to-element
6668

6769
`ReactRouter v6` [uses `element` instead of `component`](https://reactrouter.com/en/6.6.2/route/route#dynamic-segments). Check out in 🐊[Putout Editor](https://putout.cloudcmd.io/#/gist/7fb5cf000b6a61d4003fccf2fcb39da3/1de6534c6151a20e021b3508e027fb0ee2449b0c).
6870

@@ -144,6 +146,26 @@ import {StaticRouter} from 'react-router-dom/server';
144146
import {StaticRouter} from 'react-router-dom';
145147
```
146148

149+
## v8-apply-react-router-dom
150+
151+
> In v7, we collapsed the DOM APIs into react-router/dom, but to ease the v6->v7 upgrade we continued re-exporting everything through react-router-dom. We have now dropped react-router-dom, so if you didn't get around to swapping your imports in v7, you will need to swap them to react-router and react-router/dom for v8.
152+
>
153+
> (c) [reactrouter.com](https://reactrouter.com/changelog#removed-react-router-dom)
154+
155+
Checkout in 🐊[**Putout Editor**](https://putout.cloudcmd.io/#/gist/0373dab56eb5aed70ef4b45d7ae7b4e0/a4b37ed56062c33ca7793dc14495efb416943209).
156+
157+
### ❌ Example of incorrect code
158+
159+
```jsx
160+
import {Link} from 'react-router-dom';
161+
```
162+
163+
### ✅ Example of correct code
164+
165+
```jsx
166+
import {Link} from 'react-router/dom';
167+
```
168+
147169
## License
148170

149171
MIT

packages/plugin-react-router/lib/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import * as v8ApplyReactRouterDom from './v8-apply-react-router-dom/index.js';
12
import * as v7RemoveUselessServer from './v7-remove-useless-server/index.js';
23
import * as v6ConvertSwitchToRoutes from './v6-convert-switch-to-routes/index.js';
34
import * as v6ConvertComponentToElement from './v6-convert-component-to-element/index.js';
@@ -8,4 +9,5 @@ export const rules = {
89
'v6-convert-component-to-element': v6ConvertComponentToElement,
910
'v7-split-multi-segment-route': v7SplitMultiSegmentRoute,
1011
'v7-remove-useless-server': v7RemoveUselessServer,
12+
'v8-apply-react-router-dom': v8ApplyReactRouterDom,
1113
};
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
import {Link} from 'react-router-dom';
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
import {Link} from 'react-router-dom';
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export const report = () => `Use 'react-router/dom' instead of 'react-router-dom'`;
2+
3+
export const replace = () => ({
4+
'import __imports from "react-router-dom"': 'import __imports from "react-router/dom"',
5+
});
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import {createTest} from '@putout/test';
2+
import * as plugin from './index.js';
3+
4+
const test = createTest(import.meta.url, {
5+
plugins: [
6+
['v8-apply-react-router-dom', plugin],
7+
],
8+
});
9+
10+
test('react-router: v8-apply-react-router-dom: report', (t) => {
11+
t.report('v8-apply-react-router-dom', `Use 'react-router/dom' instead of 'react-router-dom'`);
12+
t.end();
13+
});
14+
15+
test('react-router: v8-apply-react-router-dom: transform', (t) => {
16+
t.transform('v8-apply-react-router-dom');
17+
t.end();
18+
});
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
import {Link} from 'react-router-dom';
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
import {Link} from 'react-router-dom';

packages/plugin-react-router/test/react-router.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,8 @@ test('plugin-react-router: transform: v7-remove-useless-server', (t) => {
2626
t.transform('v7-remove-useless-server');
2727
t.end();
2828
});
29+
30+
test('plugin-react-router: transform: v8-apply-react-router-dom', (t) => {
31+
t.transform('v8-apply-react-router-dom');
32+
t.end();
33+
});

0 commit comments

Comments
 (0)