Codemod to move imports from one module to another. Super useful in huge monorepos or huge migrations of 3rd party packages.
Inside your project root run
For npm
npm i import-move-codemod --save-dev
or for yarn
yarn add import-move-codemod --dev
or for pnpm
pnpm add import-move-codemod --D
Before the run you need to create a file with a config, let say codemod.json
{
"module": {
"from": "one",
"to": "two"
},
"specifiers": ["One"]
}
Then for example to run codemod against all the files in /src
run
npx @codemod/cli -p import-move-codemod -o [email protected] --printer prettier /src
{
module: {
from: "one",
to: "two"
},
specifiers: ["One"]
}
import { One } from 'one'
// ↓ ↓ ↓ ↓ ↓ ↓
import { One } from 'two';
{
module: {
from: "one",
to: "two"
},
specifiers: ["One", "Two"]
}
import { One, Two } from 'one'
// ↓ ↓ ↓ ↓ ↓ ↓
import { One, Two } from 'two';
import { One as OneA, Two as TwoA } from 'one'
// ↓ ↓ ↓ ↓ ↓ ↓
import { One as OneA, Two as TwoA } from 'two';
{
module: {
from: "one",
to: "two"
},
specifiers: ["Two"]
}
import { One, Two } from 'one'
// ↓ ↓ ↓ ↓ ↓ ↓
import { Two } from 'two';
import { One } from 'one';
{
module: {
from: "one",
to: "two"
},
specifiers: ["default", "One", "Two"]
}
import ADefault, { One, Two, Three } from 'one'
// ↓ ↓ ↓ ↓ ↓ ↓
import ADefault, { One, Two } from 'two';
import { Three } from 'one';
{
module: {
from: "one",
to: "two"
},
specifiers: ["default", "Two"]
}
import One, { Two } from 'one'
// ↓ ↓ ↓ ↓ ↓ ↓
import One, { Two } from 'two';
{
module: {
from: "one",
to: "two"
},
specifiers: ["*"]
}
import ADefault, { One, Two, Three } from 'one'
// ↓ ↓ ↓ ↓ ↓ ↓
import ADefault, { One, Two, Three } from 'two';
{
module: {
from: "one",
to: "two"
},
specifiers: {
One: "OneR",
Two: "TwoR"
}
}
import ADefault, { One, Two } from 'one'
// ↓ ↓ ↓ ↓ ↓ ↓
import { OneR, TwoR } from 'two';
import ADefault from 'one';
import { One, Two } from 'one'
// ↓ ↓ ↓ ↓ ↓ ↓
import { OneR, TwoR } from 'two';
{
module: {
from: "one",
to: "two"
},
specifiers: { default: "One" }
}
import One, { Two } from 'one'
// ↓ ↓ ↓ ↓ ↓ ↓
import { One } from 'two';
import { Two } from 'one';
import One from 'one'
// ↓ ↓ ↓ ↓ ↓ ↓
import { One } from 'two';
{
module: {
from: "one",
to: "two"
},
specifiers: ["default"]
}
import ADefault, { One, Two, Three } from 'one'
// ↓ ↓ ↓ ↓ ↓ ↓
import ADefault from 'two';
import { One, Two, Three } from 'one';
import One from 'one'
// ↓ ↓ ↓ ↓ ↓ ↓
import One from 'two';
{
module: {
from: "one",
to: "two"
},
specifiers: {
One: "default"
}
}
import { One } from 'one'
// ↓ ↓ ↓ ↓ ↓ ↓
import One from 'two';