babel-plugin-transform-prune-unused-imports
v1.0.1
Published
## Install
Downloads
1,918
Readme
babel-plugin-transform-prune-unused-imports
Install
Using npm:
npm install babel-plugin-transform-prune-unused-imports --save-dev
or using yarn:
yarn add babel-plugin-transform-prune-unused-imports --dev
Usage
Options
By default, only true
and false
identifiers are considered truthy/falsy.
falsyExpressions
:Array<string>
- Expressions (in addition tofalse
) to be treated as falsytruthyExpressions
:Array<string>
- Expressions (in addition totrue
) to be treated as truthy
Examples
{
"plugins": [
[
"transform-prune-unused-imports",
{
"falsyExpressions": ["process.env.NODE_ENV !=='production'"]
}
]
]
}
{
"plugins": [
[
"transform-prune-unused-imports",
{
"falsyExpressions": ["__NODE__"],
"truthyExpressions": ["__BROWSER__"]
}
]
]
}
Features
This plugin is able identify unused imports in the following scenarios:
Unreachable conditionals
import { unreachable, reachable } from "some-pkg";
if (false) {
unreachable;
}
if (true) {
reachable;
} else {
unreachable;
}
true ? reachable : unreachable;
false ? unreachable : reachable;
Unreachable chained logical expressions
import { unreachable } from "some-pkg";
foo && false && bar && unreachable;
Variable shadowing
Variable scope is correctly handled.
// Before
import { unused } from "some-pkg";
function foo(unused) {
unused;
}
// After
function foo(unused) {
unused;
}
Caveats
While this plugin works for most use cases, the static analysis is performed by this plugin is ultimately limited and won't work in some scenarios.
Unused assignment expressions
Currently this plugin will not prune unused imports that are assigned to variables, even if those new variables are unused. For example:
import { unreachable } from "some-pkg";
const foo = unreachable;
if (false) {
foo;
}