better-name

0.7.3 • Public • Published

better-name

CircleCI Coverage Status npm version

A CLI to move JavaScript(ES2015) module files keeping dependencies.

If you have the following JavaScript files coupled with import/export dependencies and you want to refactor via moving the target.js to another directory.

// src/index.js
 
import { someFn } from './oldFile';
 
export default function main() {
  someFn();
}
// src/oldFile.js
 
export function someFn() {
  return 'test';
}

This CLI keeps their dependencies. In other words, after better-name src/oldFile.js src/feat/newFile.js, the import declaration in the index.js file gets updated with the new dependencies:

// src/index.js
 
import { someFn } from './feat/newFile';
 
export default function main() {
  someFn();
}

Install

npm -g install better-name

Usage

better-name [options] <fromFile> <toFile>

Exec better-name --help if you want more details 😄

Configure

Project file patterns

By default, this CLI searches files to be replaced via src/**/*.{js,jsx,mjs,ts,tsx} glob pattern. You can customize the glob pattern with --pattern option or configuring in package.json:

  /* package.json */
  "betterName": {
    "patterns": [
      "src/javascript/**/*.{js,jsx}",
      "src/styles/**/*.css"
    ]
  },

Root import

Root path mapping using babel-plugin-root-import is supported. Path mapping configuration is loaded automaticcaly if your .babelrc has babel-plugin-root-import section.

You also can configure path mapping via package.json such as:

  /* package.json */
  "betterName": {
    "rootImport": [{
      "rootPathPrefix": "~",
      "rootPathSuffix": "src/js"
    }, {
      "rootPathPrefix": "@",
      "rootPathSuffix": "other-src/js"
    }, {
      "rootPathPrefix": "#",
      "rootPathSuffix": "../../src/in/parent"
    }]
  }

If you want to avoid prefixing after replacing, --normalize-root-import CLI option or the following package.json setting is available:

  /* package.json */
  "betterName": {
    "normalizeRootImport": true
  }

Format with Prettier

This CLI format your code after replace import declarations if your project has Prettier config file(.prettierrc, .prettierrc.js,,,). You can turn on this behavior passing --prettier options to CLI.

Remarks

Available file types

This CLI can replace import declarations in the following file types:

  • JavaScript: .js, .jsx, .mjs
  • TypeScript: .ts, .tsx

And imports non-JavaScript files are allowed. For example:

/* some.component.jsx */
 
import styles from './some.component.css';
 
// ...

However, non-JavaScript import(i.e. @import in CSS) could not be replaced.

License

MIT. See LICENSE file under the this repository.

Readme

Keywords

Package Sidebar

Install

npm i better-name

Weekly Downloads

10

Version

0.7.3

License

MIT

Unpacked Size

98.1 kB

Total Files

51

Last publish

Collaborators

  • quramy