Skip to content

Commit

Permalink
style: format
Browse files Browse the repository at this point in the history
  • Loading branch information
pd4d10 committed Feb 9, 2024
1 parent 242e6a6 commit 3b7af19
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 27 deletions.
6 changes: 4 additions & 2 deletions codemods/readme.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
# Codemod

## V4
convert named export to default

convert named export to default

If you want to run it against `.js` or `.jsx` files, please use the command below:

Expand All @@ -23,7 +24,8 @@ npx jscodeshift@latest ./path/to/src/ \
**Note:** Applying the codemod might break your code formatting, so please don't forget to run `prettier` and/or `eslint` after you've applied the codemod!

Above codemod will convert as imports as bellow

```diff
- import { ReactComponent as NoticeModeIconActive2 } from 'assets/icon.svg';
+ import NoticeModeIconActive2 from 'assets/icon.svg?react';
```
```
51 changes: 26 additions & 25 deletions codemods/src/v4/default-export/default-export.js
Original file line number Diff line number Diff line change
@@ -1,32 +1,33 @@
module.exports = function (file, api) {
const jscodeshift = api.jscodeshift;
const root = jscodeshift(file.source);
const jscodeshift = api.jscodeshift;
const root = jscodeshift(file.source);

root.find(jscodeshift.ImportDeclaration).forEach((path) => {
const importPath = path.node.source.value;
root.find(jscodeshift.ImportDeclaration).forEach((path) => {
const importPath = path.node.source.value;

if (importPath.endsWith('.svg')) {
if (importPath.endsWith(".svg")) {
const hasDefaultSpecifier = path.node.specifiers.some((specifier) =>
jscodeshift.ImportDefaultSpecifier.check(specifier)
);

const hasDefaultSpecifier = path.node.specifiers.some(specifier =>
jscodeshift.ImportDefaultSpecifier.check(specifier)
);

// Skip transformation if there is a default import specifier
if (!hasDefaultSpecifier) {
const updatedImportPath = `${importPath}?react`;
// Skip transformation if there is a default import specifier
if (!hasDefaultSpecifier) {
const updatedImportPath = `${importPath}?react`;

path.node.specifiers.forEach(specifier => {
if (jscodeshift.ImportSpecifier.check(specifier)) {
// Convert named import to default import
const newSpecifier = jscodeshift.importDefaultSpecifier(jscodeshift.identifier(specifier.local.name));
specifier.type = 'ImportDefaultSpecifier';
specifier.local = newSpecifier.local;
}
});
path.node.specifiers.forEach((specifier) => {
if (jscodeshift.ImportSpecifier.check(specifier)) {
// Convert named import to default import
const newSpecifier = jscodeshift.importDefaultSpecifier(
jscodeshift.identifier(specifier.local.name)
);
specifier.type = "ImportDefaultSpecifier";
specifier.local = newSpecifier.local;
}
});

path.node.source = jscodeshift.literal(updatedImportPath);
}
}
});
return root.toSource();
path.node.source = jscodeshift.literal(updatedImportPath);
}
}
});
return root.toSource();
};

0 comments on commit 3b7af19

Please sign in to comment.