{"analyzedAt":"2022-07-11T03:25:01.137Z","collected":{"metadata":{"name":"babel-plugin-transform-prune-unused-imports","scope":"unscoped","version":"1.0.1","description":"## Install","date":"2020-01-23T23:23:29.637Z","publisher":{"username":"rtsao","email":"ryan.j.tsao@gmail.com"},"maintainers":[{"username":"rtsao","email":"ryan.j.tsao@gmail.com"}],"repository":{"type":"git","url":"git+https://github.com/rtsao/babel-plugin-transform-prune-unused-imports.git"},"links":{"npm":"https://www.npmjs.com/package/babel-plugin-transform-prune-unused-imports","homepage":"https://github.com/rtsao/babel-plugin-transform-prune-unused-imports#readme","repository":"https://github.com/rtsao/babel-plugin-transform-prune-unused-imports","bugs":"https://github.com/rtsao/babel-plugin-transform-prune-unused-imports/issues"},"license":"MIT","devDependencies":{"@babel/core":"^7.8.3","babel-plugin-tester":"^8.0.1","flow-bin":"^0.116.1","jest":"^25.1.0"},"releases":[{"from":"2022-06-11T00:00:00.000Z","to":"2022-07-11T00:00:00.000Z","count":0},{"from":"2022-04-12T00:00:00.000Z","to":"2022-07-11T00:00:00.000Z","count":0},{"from":"2022-01-12T00:00:00.000Z","to":"2022-07-11T00:00:00.000Z","count":1},{"from":"2021-07-11T00:00:00.000Z","to":"2022-07-11T00:00:00.000Z","count":1},{"from":"2020-07-11T00:00:00.000Z","to":"2022-07-11T00:00:00.000Z","count":1}],"hasTestScript":true,"readme":"# babel-plugin-transform-prune-unused-imports\n\n## Install\n\nUsing npm:\n\n```\nnpm install babel-plugin-transform-prune-unused-imports --save-dev\n```\n\nor using yarn:\n\n```\nyarn add babel-plugin-transform-prune-unused-imports --dev\n```\n\n## Usage\n\n### Options\n\nBy default, only `true` and `false` identifiers are considered truthy/falsy.\n\n- `falsyExpressions` : `Array<string>` - Expressions (in addition to `false`) to be treated as falsy\n- `truthyExpressions` : `Array<string>` - Expressions (in addition to `true`) to be treated as truthy\n\n### Examples\n\n```json\n{\n  \"plugins\": [\n    [\n      \"transform-prune-unused-imports\",\n      {\n        \"falsyExpressions\": [\"process.env.NODE_ENV !=='production'\"]\n      }\n    ]\n  ]\n}\n```\n\n```json\n{\n  \"plugins\": [\n    [\n      \"transform-prune-unused-imports\",\n      {\n        \"falsyExpressions\": [\"__NODE__\"],\n        \"truthyExpressions\": [\"__BROWSER__\"]\n      }\n    ]\n  ]\n}\n```\n\n## Features\n\nThis plugin is able identify unused imports in the following scenarios:\n\n### Unreachable conditionals\n\n```js\nimport { unreachable, reachable } from \"some-pkg\";\n\nif (false) {\n  unreachable;\n}\n\nif (true) {\n  reachable;\n} else {\n  unreachable;\n}\n\ntrue ? reachable : unreachable;\n\nfalse ? unreachable : reachable;\n```\n\n### Unreachable chained logical expressions\n\n```js\nimport { unreachable } from \"some-pkg\";\n\nfoo && false && bar && unreachable;\n```\n\n### Variable shadowing\n\nVariable scope is correctly handled.\n\n```js\n// Before\nimport { unused } from \"some-pkg\";\n\nfunction foo(unused) {\n  unused;\n}\n```\n\n```js\n// After\nfunction foo(unused) {\n  unused;\n}\n```\n\n## Caveats\n\nWhile 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.\n\n#### Unused assignment expressions\n\nCurrently this plugin will not prune unused imports that are assigned to variables, even if those new variables are unused. For example:\n\n```js\nimport { unreachable } from \"some-pkg\";\n\nconst foo = unreachable;\n\nif (false) {\n  foo;\n}\n```"},"npm":{"downloads":[{"from":"2022-07-10T00:00:00.000Z","to":"2022-07-11T00:00:00.000Z","count":3},{"from":"2022-07-04T00:00:00.000Z","to":"2022-07-11T00:00:00.000Z","count":836},{"from":"2022-06-11T00:00:00.000Z","to":"2022-07-11T00:00:00.000Z","count":3910},{"from":"2022-04-12T00:00:00.000Z","to":"2022-07-11T00:00:00.000Z","count":20640},{"from":"2022-01-12T00:00:00.000Z","to":"2022-07-11T00:00:00.000Z","count":68324},{"from":"2021-07-11T00:00:00.000Z","to":"2022-07-11T00:00:00.000Z","count":234746}],"starsCount":0},"github":{"starsCount":5,"forksCount":1,"subscribersCount":2,"issues":{"count":15,"openCount":7,"distribution":{"3600":0,"10800":0,"32400":0,"97200":0,"291600":0,"874800":0,"2624400":0,"7873200":2,"23619600":6,"70858800":7,"212576400":0},"isDisabled":false},"contributors":[{"username":"rtsao","commitsCount":6},{"username":"dependabot[bot]","commitsCount":3}],"commits":[{"from":"2022-07-04T00:00:00.000Z","to":"2022-07-11T00:00:00.000Z","count":0},{"from":"2022-06-11T00:00:00.000Z","to":"2022-07-11T00:00:00.000Z","count":0},{"from":"2022-04-12T00:00:00.000Z","to":"2022-07-11T00:00:00.000Z","count":0},{"from":"2022-01-12T00:00:00.000Z","to":"2022-07-11T00:00:00.000Z","count":0},{"from":"2021-07-11T00:00:00.000Z","to":"2022-07-11T00:00:00.000Z","count":0}]},"source":{"files":{"readmeSize":2018,"testsSize":2918}}},"evaluation":{"quality":{"carefulness":0.71,"tests":0.6,"health":1,"branding":0},"popularity":{"communityInterest":10,"downloadsCount":6880,"downloadsAcceleration":-194.09208523592085,"dependentsCount":0},"maintenance":{"releasesFrequency":0.9,"commitsFrequency":0.9,"openIssues":0.9,"issuesDistribution":0.9}},"score":{"final":0.6178587528301636,"detail":{"quality":0.8083361703923992,"popularity":0.07257031379217072,"maintenance":0.9998808339576686}}}