Identify unused imports in ES6 modules.
grunt-import-clean
is a simple plugin that identifies imports that are never referenced in modules utilizing the new ES6 syntax:
import {
$_is,
$_slice,
$_shift,
$_pop,
$_forEach,
$_length
} from 'static/shared';
export default function Constructor() {
// ...
}
Constructor.prototype = {
// ...
};
This plugin requires Grunt ~0.4.5
If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
npm install grunt-import-clean --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks( 'grunt-import-clean' );
In your project's Gruntfile, add a section named 'import-clean'
to the data object passed into grunt.initConfig()
.
grunt.initConfig({
'import-clean': {
target: [ /* target-specific file paths or patters go here. */ ],
},
});
Property | Type | Default | Description |
---|---|---|---|
force |
Boolean |
false |
A boolean value indicating whether grunt should continue if unused imports are detected. |
ignore |
String or Array of String |
[] |
The name(s) of unused imports to ignore. If ignored unused imports are detected, they will still be reported on with a warning. If only ignored unused imports are detected, grunt will continue. |
test |
Boolean |
false |
A boolean value indicating whether unit tests should be run. |
In this example, 'import-clean:all'
validates imports in all source files, while 'import-clean:some'
validates only specific files.
grunt.initConfig({
'import-clean': {
all: 'src/*.js',
some: [ 'src/controller.js' , 'src/service.js' ]
},
});
# success
Validating imports in 5 files... ✓ OK
# error
Validating imports in 5 files...
"controller.js": [
"$_is",
"$_forEach"
],
"service.js": [
"$_isArray"
]
Warning: found 3 unused imports in 2 files. Use --force to continue.
grunt.initConfig({
'import-clean': {
all: 'src/*.js',
some: [ 'src/Component.jsx' , 'src/service.js' ],
options: {
ignore: ['React'] // OR simply ignore: 'React', OR to ignore multiple imports ['React', 'SomethingElse']
}
},
});
# success (only ignored unused imports found, grunt continues)
Validating imports in 5 files...
"Component.jsx": [
"React (IGNORED)"
]
Warning: found 1 unused imports in 1 files (1 IGNORED). Use --force to continue.
# error (ignored and non-ignored unused imports found, grunt stops)
Validating imports in 5 files...
"Component.jsx": [
"React (IGNORED)",
"$_forEach"
],
"service.js": [
"$_isArray"
]
Warning: found 3 unused imports in 2 files (1 IGNORED). Use --force to continue.