All Projects → jaydenseric → find-unused-exports

jaydenseric / find-unused-exports

Licence: MIT License
A Node.js CLI and equivalent JS API to find unused ECMAScript module exports in a project.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to find-unused-exports

coverage-node
A simple CLI to run Node.js and report code coverage.
Stars: ✭ 39 (+30%)
Mutual labels:  esm, maintained, npx, mjs
extract-files
A function to recursively extract files and their object paths within a value, replacing them with null in a deep clone without mutating the original value. FileList instances are treated as File instance arrays. Files are typically File and Blob instances.
Stars: ✭ 48 (+60%)
Mutual labels:  esm, maintained, mjs
charlie
18F's Slack bot, Charlie. Based on Hubot.
Stars: ✭ 27 (-10%)
Mutual labels:  maintained
freeRouter
freeRouter - networking swiss army knife
Stars: ✭ 26 (-13.33%)
Mutual labels:  babel
babel-runtime-example
An example of how to use @babel/plugin-transform-runtime
Stars: ✭ 16 (-46.67%)
Mutual labels:  babel
mock-spy-module-import
JavaScript import/require module testing do's and don'ts with Jest
Stars: ✭ 40 (+33.33%)
Mutual labels:  esm
node-lambda-babel-template
A minimal template for an ES2015+ Node.js app running on AWS Lambda (w/ babel and webpack).
Stars: ✭ 40 (+33.33%)
Mutual labels:  babel
node-compat-require
Easily allow your Node program to run in a target node version range to maximize compatibility.
Stars: ✭ 22 (-26.67%)
Mutual labels:  npx
k6-template-es6
Template repository for bundling test projects into single test scripts runnable by k6
Stars: ✭ 39 (+30%)
Mutual labels:  babel
greenwood
Greenwood is your workbench for the web, focused on supporting modern web standards and development to help you create your next project.
Stars: ✭ 48 (+60%)
Mutual labels:  esm
medly-components
🧩 Medly components provides numerous themable react components, each with multiple varitaions of sizes, colors, position etc.
Stars: ✭ 66 (+120%)
Mutual labels:  babel
babel-plugin-proposal-pattern-matching
the minimal grammar, high performance JavaScript pattern matching implementation
Stars: ✭ 34 (+13.33%)
Mutual labels:  babel
react-multi-context
Manage multiple React 16 contexts with a single component.
Stars: ✭ 19 (-36.67%)
Mutual labels:  babel
babel-note
Some examples of babel
Stars: ✭ 12 (-60%)
Mutual labels:  babel
npm-es-modules
Breakdown of 7 different ways to use ES modules with npm today.
Stars: ✭ 67 (+123.33%)
Mutual labels:  esm
async-folder-walker
A recursive async iterator of the files and directories in a given directory. Can take multiple directories and files, limit walk depth and filter based on path names and stat results.
Stars: ✭ 18 (-40%)
Mutual labels:  esm
create-nodejs-ts
Starter Project for Node.js With TypeScript.
Stars: ✭ 34 (+13.33%)
Mutual labels:  esm
stan
🔨 Collection of front-end engineering tools
Stars: ✭ 19 (-36.67%)
Mutual labels:  babel
jakejarvis
hey 👋
Stars: ✭ 15 (-50%)
Mutual labels:  npx
puppeteer-electron-quickstart
Quickstart project to run puppeteer library from an Electron application. Using ES-6 and babel.
Stars: ✭ 52 (+73.33%)
Mutual labels:  babel

find-unused-exports

npm version CI status

A Node.js CLI and equivalent JS API to find unused ECMAScript module exports in a project.

To achieve this the whole project is analyzed at once, something ESLint can’t do as it lints files in isolation.

  • The npx find-unused-exports script is handy for finding redundant code to remove in legacy projects.
  • Use the CLI command find-unused-exports in package test scripts, so that CI can prevent the addition of redundant code.

Installation

To install with npm, run:

npm install find-unused-exports --save-dev

Then, use either the CLI command find-unused-exports or the JS API function findUnusedExports.

Ignoring unused exports

.gitignore files are used to ignore whole files or directories. This is useful for ignoring:

  • Third party modules, e.g. node_modules.
  • Compiled files, e.g. .next or dist.

Special comments can be used anywhere in a module to ignore all or specific unused exports. This is useful for ignoring intentionally unused exports intended to be imported from external code, e.g.

  • For published packages, the public exports.
  • For Next.js projects, the default exports in pages directory modules.

Examples

How to ignore all unused exports:

// ignore unused exports
export const a = true;
export default true;

How to ignore specific unused exports:

// ignore unused exports b, default
export const a = true;
export const b = true;
export default true;

Multiple comments can be used:

// ignore unused exports a
export const a = true;

// ignore unused exports b
export const b = true;

Comments are case-insensitive, except for the export names:

// iGnOrE UnUsEd eXpOrTs default

Line or block comments can be used:

/* ignore unused exports */

CLI

Command find-unused-exports

Finds unused ECMAScript module exports in a project. If some are found, it reports them to stderr and exits with a 1 error status. .gitignore files are used to ignore files.

It implements the JS API function findUnusedExports.

Arguments

Argument Default Description
--module-glob **/*.{mjs,cjs,js} JavaScript file glob pattern.
--resolve-file-extensions File extensions (without the leading ., multiple separated with , in preference order) to automatically resolve in extensionless import specifiers. Import specifier file extensions are mandatory in Node.js; if your project resolves extensionless imports at build time (e.g. Next.js, via webpack) mjs,js might be appropriate.
--resolve-index-files Should directory index files be automatically resolved in extensionless import specifiers. Node.js doesn’t do this by default; if your project resolves extensionless imports at build time (e.g. Next.js, via webpack) this argument might be appropriate. This argument only works if the argument --resolve-file-extensions is used.

Examples

Using npx in a standard Node.js project:

npx find-unused-exports

Using npx in a typical webpack project that has ESM in .js files, extensionless import specifiers, and index.js files:

npx find-unused-exports --module-glob "**/*.js" --resolve-file-extensions js --resolve-index-files

package.json scripts for a project that also uses eslint and prettier:

{
  "scripts": {
    "eslint": "eslint .",
    "prettier": "prettier -c .",
    "find-unused-exports": "find-unused-exports",
    "test": "npm run eslint && npm run prettier && npm run find-unused-exports",
    "prepublishOnly": "npm test"
  }
}

Exports

These ECMAScript modules are published to npm and exported via the package.json exports field:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].