@stackline/uglify-js
v1.0.5
Published
UglifyJS 2-compatible JavaScript minification with a synchronous API and legacy command-line options
Maintainers
Readme
@stackline/uglify-js
UglifyJS 2-compatible JavaScript minification with a synchronous API and legacy command-line options.
Documentation | npm | Issues | Repository
Current package version: 1.0.5
Why this package?
This maintained compatibility fork of @sheetjs/[email protected] preserves the UglifyJS 2 parser, compressor, mangler, synchronous API, and legacy command-line options.
Version 1.0.0 fixed a hashbang/preamble ordering bug: an input beginning with #!/usr/bin/env node keeps that interpreter line first when a build or license preamble is supplied. This follows upstream issue #1332, reproduced against the published SheetJS fork. The SheetJS fork's forced semicolons and source-map serialization compatibility are retained.
File-pattern matching also escapes literal regular-expression characters correctly. In the file-based API, a basename containing a pipe or POSIX backslash no longer selects unrelated files or produces an invalid regular expression. The existing * and ? wildcard behavior is retained.
Source maps use the synchronous source-map-js API; the original Browserify transformer is included with its MIT attribution. Modern Yargs loads asynchronously only at CLI startup. minify, parsing, and the other library APIs remain synchronous.
Compatibility
| Item | Value |
| --- | --- |
| Package | @stackline/[email protected] |
| Supported Node.js | ^20.19.0 || ^22.12.0 || >=24 |
| Module entry | tools/node.js (CommonJS) |
| Runtime dependencies | 3 direct dependencies; optional Acorn parser |
| CLI | uglifyjs |
The optional --acorn parser is installed by default and parses the ES5 input accepted by this compatibility release. This package retains UglifyJS 2 syntax and options; it does not add a modern JavaScript compressor.
Installation
npm install --save-dev @stackline/uglify-jsUsage
const UglifyJS = require('@stackline/uglify-js');
const result = UglifyJS.minify('function twice(n) { return n * 2; }', {
fromString: true
});
console.log(result.code);The uglifyjs executable retains legacy build syntax:
uglifyjs input.js --support-ie8 -m \
--source-map output.js.map --preamble '/* Build */' -o output.jsSecurity
This compatibility line retains the UglifyJS 2 language surface. File-pattern matching escapes literal regular-expression characters; supplied code is parsed and transformed by the legacy compressor.
API Surface
The full historical options and API reference are preserved in README.upstream.md. The compatibility notes above describe changes in the maintained package.
Local Development
Clone the repository and run the following commands from its root:
npm ci
npm testThe suite checks the API, command-line options, source maps, property extraction, and Browserify transformer. Browserify output is exercised in a JavaScript VM; this does not establish compatibility with every browser or bundler.
Release Checklist
- Update the package version, lockfile, generated version fields, and changelog together.
- Run the development checks above and audit both
npm auditandnpm audit --omit=dev. - Use the GitHub publish workflow with its
Prodenvironment to publish the exact CI tarball. - Verify public npm bytes, package identity, provenance, and the immutable GitHub release evidence.
License
BSD-2-Clause. Original copyright notices and upstream attribution are retained.
See UPSTREAM.md for the exact source artifact and THIRD_PARTY_NOTICES.md for bundled helper attribution.
Dependency maintenance for this release is documented in DEPENDENCY_UPDATES.md.
Credits and original authors
- Original project: uglify-js.
- Mihai Bazon.
- Copyright 2012-2013 (c) Mihai Bazon [email protected].
- Stackline maintenance: Alexandro Paixao Marques and Stackline contributors.
Original copyright, license notices and contributor acknowledgements remain part of this distribution. Stackline maintenance does not replace authorship of the original work.
Community and Links
Use this repository's issue tracker for reproducible bugs and feature requests. Join r/Stackline for examples, usage questions and release discussions.
