Skip to content

Commit 4b9d7bb

Browse files
committed
init project.
1 parent 83b75df commit 4b9d7bb

File tree

6 files changed

+458
-1
lines changed

6 files changed

+458
-1
lines changed

.gitignore

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/.idea/
2+
node_modules
3+
npm-debug.log*
4+
package-lock.json
5+
coverage
6+
dist
7+
lib
8+
.DS_Store
9+
.cache
10+
.vscode
11+
.env.local
12+
.env.development.local
13+
.env.test.local
14+
.env.production.local
15+
16+
17+
*.bak
18+
*.tem
19+
*.temp
20+
#.swp
21+
*.*~
22+
~*.*

README.md

Lines changed: 239 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,239 @@
1-
# babel-plugin-transform-replace-export-default
1+
babel-plugin-transform-replace-export-default
2+
===
3+
<!--rehype:style=display: flex; height: 230px; align-items: center; justify-content: center; font-size: 38px;-->
4+
5+
Replace `export default` with `return`, or just remove `export default`.
6+
7+
## Usage
8+
9+
```bash
10+
npm install babel-plugin-transform-replace-export-default --save-dev
11+
```
12+
13+
Via `.babelrc` or `babel-loader`.
14+
15+
```json
16+
{
17+
"plugins": [
18+
"babel-plugin-transform-replace-export-default"
19+
]
20+
}
21+
```
22+
23+
Or
24+
25+
```json
26+
{
27+
"plugins": [
28+
["babel-plugin-transform-replace-export-default", {
29+
"removeExportDefault": true
30+
}]
31+
]
32+
}
33+
```
34+
35+
36+
## Replace `export default` to `return`
37+
38+
### Example 1
39+
40+
```js
41+
// Input Code
42+
const demo = 0;
43+
export default demo;
44+
45+
// Output ↓ ↓ ↓ ↓ ↓ ↓
46+
const demo = 0;
47+
return demo;
48+
```
49+
50+
Output Result
51+
52+
```diff
53+
const demo = 0;
54+
- export default demo;
55+
+ return demo;
56+
```
57+
58+
### Example 2
59+
60+
```js
61+
// Input Code
62+
function demo() {};
63+
export default demo;
64+
65+
// Output ↓ ↓ ↓ ↓ ↓ ↓
66+
function demo() {};
67+
return demo;
68+
```
69+
70+
Output Result
71+
72+
```diff
73+
function demo() {};
74+
- export default demo;
75+
+ return demo;
76+
```
77+
78+
### Example 3
79+
80+
```js
81+
// Input Code
82+
class demo { constructor() { } };
83+
export default demo;
84+
85+
// Output ↓ ↓ ↓ ↓ ↓ ↓
86+
class demo { constructor() { } };
87+
return demo;
88+
```
89+
90+
Output Result
91+
92+
```diff
93+
class demo { constructor() { } };
94+
- export default demo;
95+
+ return demo;
96+
```
97+
98+
### Example 4
99+
100+
```js
101+
// Input Code
102+
export default class demo { constructor() { } };
103+
104+
// Output ↓ ↓ ↓ ↓ ↓ ↓
105+
return class demo { constructor() { } };
106+
```
107+
108+
Output Result
109+
110+
```diff
111+
- export default class demo { constructor() { } };
112+
+ return class demo { constructor() { } };
113+
```
114+
115+
### Example 5
116+
117+
```js
118+
// Input Code
119+
export default class demo { constructor() { } };
120+
121+
// Output ↓ ↓ ↓ ↓ ↓ ↓
122+
return class demo { constructor() { } };
123+
```
124+
125+
Output Result
126+
127+
```diff
128+
- export default function demo() {};
129+
+ return function demo() {};
130+
```
131+
132+
## Remove `export default`
133+
134+
```json
135+
{
136+
"plugins": [
137+
["babel-plugin-transform-replace-export-default", {
138+
"removeExportDefault": true
139+
}]
140+
]
141+
}
142+
```
143+
144+
### Example 1
145+
146+
```js
147+
// Input Code
148+
export default class demo {}
149+
150+
// Output ↓ ↓ ↓ ↓ ↓ ↓
151+
class demo {}
152+
```
153+
154+
Output Result
155+
156+
```diff
157+
- export default class demo {}
158+
+ class demo {}
159+
```
160+
161+
### Example 2
162+
163+
```js
164+
// Input Code
165+
export default function demo() {}
166+
167+
// Output ↓ ↓ ↓ ↓ ↓ ↓
168+
function demo() {}
169+
```
170+
171+
Output Result
172+
173+
```diff
174+
- export default function demo() {}
175+
+ function demo() {}
176+
```
177+
178+
### Example 3
179+
180+
```js
181+
// Input Code
182+
class demo {}
183+
export default demo;
184+
185+
// Output ↓ ↓ ↓ ↓ ↓ ↓
186+
class demo {}
187+
```
188+
189+
Output Result
190+
191+
```diff
192+
class demo {}
193+
- export default demo;
194+
```
195+
196+
### Example 4
197+
198+
```js
199+
// Input Code
200+
function demo() {}
201+
export default demo;
202+
203+
// Output ↓ ↓ ↓ ↓ ↓ ↓
204+
function demo() {}
205+
```
206+
207+
Output Result
208+
209+
```diff
210+
function demo() {}
211+
- export default demo;
212+
```
213+
214+
### Example 5
215+
216+
```js
217+
// Input Code
218+
const demo = 0;
219+
export default demo;
220+
221+
// Output ↓ ↓ ↓ ↓ ↓ ↓
222+
const demo = 0;
223+
```
224+
225+
Output Result
226+
227+
```diff
228+
const demo = 0;
229+
- export default demo;
230+
```
231+
232+
## Related
233+
234+
- [markdown-react-code-preview-loader](https://github.com/kktjs/markdown-react-code-preview-loader)
235+
- [babel-plugin-transform-remove-imports](https://github.com/uiwjs/babel-plugin-transform-remove-imports)
236+
237+
## License
238+
239+
MIT © [`Kenny Wong`](https://github.com/jaywcjlove)

package.json

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
{
2+
"name": "babel-plugin-transform-replace-export-default",
3+
"version": "1.0.0",
4+
"description": "Replace `export default` with `return`, or just remove `export default`.",
5+
"typings": "./lib/index.d.ts",
6+
"main": "./lib/index.js",
7+
"scripts": {
8+
"watch": "tsbb watch --disable-babel",
9+
"build": "tsbb build --disable-babel",
10+
"test": "tsbb test",
11+
"coverage": "npm run build && tsbb test --coverage --bail"
12+
},
13+
"repository": {
14+
"type": "git",
15+
"url": "git+https://github.com/kktjs/babel-plugin-transform-replace-export-default.git"
16+
},
17+
"keywords": [
18+
"babel",
19+
"babel-plugin-transform",
20+
"babel-plugin"
21+
],
22+
"author": "jaywcjlove",
23+
"license": "MIT",
24+
"peerDependencies": {
25+
"@babel/core": "^7.0.0-0"
26+
},
27+
"dependencies": {},
28+
"devDependencies": {
29+
"@babel/core": "^7.15.5",
30+
"idoc": "^1.18.1",
31+
"tsbb": "^3.7.2"
32+
}
33+
}

src/index.ts

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import { PluginObj, PluginPass } from '@babel/core';
2+
3+
export type Options = {
4+
removeExportDefault?: boolean;
5+
}
6+
7+
export default function defaultExportReplace(): PluginObj<PluginPass> {
8+
return {
9+
name: 'transform-replace-export-default',
10+
visitor: {
11+
ExportDefaultDeclaration(path, state) {
12+
const declaration = path.node.declaration;
13+
const { removeExportDefault } = state.opts as Options;
14+
if (removeExportDefault) {
15+
declaration.type === 'Identifier' ? path.remove() : path.replaceWith(declaration);
16+
return;
17+
}
18+
19+
if (declaration.type === 'ClassDeclaration' || declaration.type === 'FunctionDeclaration') {
20+
// @ts-ignore
21+
path.node.type = 'ReturnStatement';
22+
// @ts-ignore
23+
path.node.argument = declaration;
24+
path.replaceWith(path.node);
25+
} else if (declaration.type === 'Identifier') {
26+
// declaration.name = `return ${declaration.name}`;
27+
// @ts-ignore
28+
path.node.type = 'ReturnStatement';
29+
// @ts-ignore
30+
path.node.argument = declaration;
31+
path.replaceWith(path.node);
32+
}
33+
},
34+
},
35+
};
36+
}

0 commit comments

Comments
 (0)