Registry / serialization / babel-dead-code-elimination

babel-dead-code-elimination

JSON →
library1.0.12jsnpmunverified

A library providing composable primitives for dead code elimination in Babel AST, version 1.0.12. It is not a Babel plugin but a set of utilities (deadCodeElimination, findReferencedIdentifiers) to integrate into custom transforms. Released as a stable package with frequent patches, it differs from full-featured plugins by offering fine-grained control and working directly with the AST. Main use cases: removing unused variables, handling side-effects carefully via referenced identifier tracking, and preserving runtime behavior (e.g., object rest patterns). Ships TypeScript types.

npm install babel-dead-code-elimination
INSTALL
IMPORT
SIG · BABEL-DEAD-CODE-EL
B
babel-dead-code-elimination
serializationjavascriptv1.0.12
Install
Import
Disk
Pass rate
0/ 6
Env Coverage0 / 6
glibc
1822
musl
1822
Install & Compatibility
Where this runs
tested against v? · npm install
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
node 18226 runs
build_error
glibc
node 18226 runs
build_error
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

deadCodeElimination
import { deadCodeElimination } from 'babel-dead-code-elimination'
import deadCodeElimination from 'babel-dead-code-elimination'
Named export, not default. This is ESM. For CommonJS, use const { deadCodeElimination } = require('babel-dead-code-elimination').
findReferencedIdentifiers
import { findReferencedIdentifiers } from 'babel-dead-code-elimination'
const findReferencedIdentifiers = require('babel-dead-code-elimination').findReferencedIdentifiers
Also a named export. CommonJS require destructuring works but named import is preferred for ESM.
types
import type { ... } from 'babel-dead-code-elimination'
The package ships TypeScript types but does not export them directly (e.g., no 'types' export). You can import the functions as usual and types are inferred.

Parses a module, eliminates unreferenced variable 'b', then regenerates code. Shows basic usage.

import { parse } from '@babel/parser' import generate from '@babel/generator' import { deadCodeElimination } from 'babel-dead-code-elimination' const source = ` const a = 1 const b = 2 console.log(a) ` const ast = parse(source, { sourceType: 'module' }) deadCodeElimination(ast) const result = generate(ast).code console.log(result) // Expected output: "const a = 1;\nconsole.log(a);"
Debug
Known issues
gotchadeadCodeElimination will remove variables even if they have side-effects in their initializer (e.g., const x = sideEffect()) unless you pass a set of referenced identifiers.
fix
Use findReferencedIdentifiers before transforms and pass the set as second argument to deadCodeElimination to preserve existing references.
affects: >=1.0.0
deprecatedIn v1.0.5 and earlier, function expressions were incorrectly eliminated. This was fixed in v1.0.4 and v1.0.5.
fix
Upgrade to >=1.0.5 to avoid eliminating function expressions.
affects: <1.0.4
breakingIn v1.0.9, object pattern rest elements behave differently: unused variables before rest are preserved to avoid changing rest output.
fix
Ensure your code does not rely on elimination of unused variables in object patterns with rest elements (e.g., let { a, ...rest } = obj;).
affects: >=1.0.9
gotchaArrow functions and function expressions are never eliminated because they do not add names to outer scope. Only variable declarators referencing them can be eliminated.
fix
If you rely on elimination of arrow functions, reconsider the design; they are safe from removal.
affects: >=1.0.5
gotchaFor-loop iterator variables (var, let, const) in for...of/for...in are not eliminated since v1.0.7, but earlier versions only preserved var.
fix
Upgrade to >=1.0.8 to ensure const/let iterators are preserved.
affects: <1.0.7
Errors
Common errors & fixes
Cannot find module 'babel-dead-code-elimination'
Package not installed or CommonJS/ESM mismatch (e.g., using require in ESM project).
fix
Run npm install babel-dead-code-elimination. Use import { ... } from 'babel-dead-code-elimination' for ESM, or const { ... } = require('babel-dead-code-elimination') for CommonJS.
TypeError: deadCodeElimination is not a function
Using default import instead of named import.
fix
Use named import: import { deadCodeElimination } from 'babel-dead-code-elimination'.
Cannot use import statement outside a module
Running TypeScript without module configuration or using ESM syntax in CommonJS environment.
fix
Set type: 'module' in package.json or use .mjs extension. Alternatively, use require.
Upgrade
Version history
1.0.12latest on npm
Audit
Dependencies
@babel/parserrequiredRequired for parsing source code into AST in the quickstart example.
@babel/generatorrequiredRequired for generating code from AST after elimination.
@babel/traverseoptionalNeeded when using custom transforms with findReferencedIdentifiers.
Agent activity
20 hits · last 30 days
node
16
OpenAI (training)
1
Resources