Skip to content

sivukhin/imports-fixer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

imports-fixer

Simple codemod to fix your imports

Use this tools via NPX or simply install it as dev dependency in the project:

$> npm install --save-dev imports-fixer
$> npx imports-fixer --help
Usage: cli [options]

Options:
  --dry                                              dry run - outputs changed files and does not commit changes to the disk
  --tsconfig <path>                                  path to the tsconfig.json configuration file
  --include-content <content-regex>                  include files which content matches specified regexp
  --exclude-content <content-regex>                  exclude files which content matches specified regexp
  -d, --debug                                        enable debug log
  --git-dir <path>                                   path to the git directory with the renames to track
  --source-dir <path>                                path to the directory with sources to fix
  --include-extensions <comma-separated-extensions>  list of file extensions to fix (default: "js, ts, jsx, tsx")
  --config <path>                                    path to the imports-fixer configuration script
  -h, --help                                         display help for command

To enable imports-fixer codemod you need to write simple Javascript config file, that will tell codemod the rules about imports renaming. Simple configuration may look like this:

// .rename-config.js

const path = require("path");
const backendDomain = "/home/user/project/backend";
const frontendDomain = "/home/user/project/frontend/models";

function transformPath(p) {
  if (p.startsWith(backendDomain)) {
    return path.join(frontendDomain, path.relative(backendDomain, p));
  }
  return undefined;
}

module.exports = {
  registerRename({ path: fromPath, name: from }, { path: toPath, name: to }, registry) {
    const fromTransformed = transformPath(fromPath);
    const toTransformed = transformPath(toPath);
    if (fromTransformed != null && toTransformed != null) {
      const rename = registry.addRename(fromTransformed, toTransformed);
      if (from !== to) {
        rename.addSubjectRename(from, to);
      }
    }
  },
};

And then you can fix imports in your git repository with simple command:

$> npx imports-fixer --config .rename-config.js --git-dir /home/user/project --source-dir /home/user/project/frontend

About

Simple codemod to fix your imports

Topics

Resources

Stars

Watchers

Forks