Grit includes standard patterns for declaratively adding, removing, and updating imports.
Apply with the Grit CLI
grit apply importing
Ensures, replaces and removes specified imports
BEFORE
import { keep } from 'keepable'; import { orderBy } from 'underscore'; import fetch from 'elsewhere'; import { fetch } from 'node-fetch'; import { fetch, more } from 'node-fetch'; import fetch from 'node-fetch'; import defaultNotNamedFetch, { fetch } from 'node-fetch'; console.log(orderBy([1, 2, 3])); console.log(v4()); fetch();
AFTER
import { keep } from 'keepable'; import { orderBy } from 'lodash'; import { v4 } from 'uuid'; import fetch from 'elsewhere'; import { more } from 'node-fetch'; import defaultNotNamedFetch from 'node-fetch'; console.log(orderBy([1, 2, 3])); console.log(v4()); fetch();
Ignores Shebang
BEFORE
#!/usr/bin/env node import { orderBy } from 'underscore'; import fetch from 'elsewhere'; import { fetch } from 'node-fetch'; import { fetch, more } from 'node-fetch'; import fetch from 'node-fetch'; console.log(orderBy([1, 2, 3])); console.log(v4()); fetch();
AFTER
#!/usr/bin/env node import { orderBy } from 'lodash'; import { v4 } from 'uuid'; import fetch from 'elsewhere'; import { more } from 'node-fetch'; console.log(orderBy([1, 2, 3])); console.log(v4()); fetch();
Ensures a React import
From https://docs.grit.io/guides/imports:
BEFORE
import _ from 'lodash'; class Button extends Component { // ... }
AFTER
import _ from 'lodash'; import { Component } from 'React'; class Button extends Component { // ... }
Leaves correct imports alone
BEFORE
import { orderBy } from 'lodash'; orderBy([1, 2, 3]);
AFTER
import { orderBy } from 'lodash'; orderBy([1, 2, 3]);
Inserts imports when none exist
BEFORE
console.log('this is a test'); class Button extends Component { // ... }
AFTER
import { Component } from 'React'; console.log('this is a test'); class Button extends Component { // ... }
Standalone add_import
The add_import($name, $source)
predicate can be used to add an import to a file.
BEFORE
final_case('this is a test');
AFTER
import { just_ensure } from 'this_place'; final_case('this is a test');