Reverse engineering JavaScript and CSS sources from sourcemaps
The name of the project is for honouring the legacy of a certain master from the Ryukyu archipelago who contributed to the martial arts that we today know as karate and ryukyu kobujutsu.
Install the shuji
command line utility globally with npm.
Elevated privileges might be needed via sudo
, depending on the platform. In most cases just:
npm install --global shuji
Please note that the minimum supported version of Node.js is 10.13.0
, which is the active Long Term Support (LTS) version.
The output of shuji --help
pretty much covers all the options:
shuji - Reverse engineering JavaScript and CSS sources from sourcemaps
Usage: shuji [options] <file|directory>
-h, --help Help and usage instructions
-o, --output-dir String Output directory - default: .
-p, --preserve Preserve sourcemap's original folder structure.
-M, --match String Regular expression for matching and filtering files -
default: \.map$
-v, --verbose Verbose output, will print which file is currently being
processed
-V, --version Version number
Version 0.6.1
Test files are generated with UglifyJS 3 and
sass
by using files from the stretchy project,
with the following commands:
uglifyjs stretchy.js --compress --mangle \
--output stretchy.min.js --source-map includeSources
mv stretchy.min.js.map stretchy-with-sources.min.js.map
uglifyjs stretchy.js --compress --mangle \
--output stretchy.min.js --source-map "url=inline"
mv stretchy.min.js stretchy-inline-sources.min.js
uglifyjs stretchy.js --compress --mangle \
--output stretchy.min.js --source-map "url=stretchy.min.js.map"
sass stretchy.scss:stretchy.css
sass stretchy.scss:stretchy-inline.css --embed-source-map
Unit tests are written with tape
and can be executed with npm test
.
Code coverage is inspected with nyc
and
can be executed with npm run coverage
after running npm test
.
Please make sure it is over 90% at all times.
"A Beginner's Guide to Open Source: The Best Advice for Making your First Contribution".
Also there is a blog post about "45 Github Issues Dos and Don’ts".
Linting is done with ESLint and can be executed with npm run lint
.
There should be no errors appearing after any JavaScript file changes.
Please note that any features or changed will not be merged without working unit tests.
v0.7.0
(2020-02)- Minimum Node.js version lifted from
8.11.1
to10.13.0
- Minimum Node.js version lifted from
v0.6.1
(2019-09-13)- Dependency update and better unit test coverage
v0.6.0
(2019-05-27)- Removed the option for directory recursion, it is now always a recursive operation
- Support for reading inline source maps, from JavaScript and CSS files
- Use
npm-shrinkwrap.json
for locking the working set of 3rd party dependencies
v0.5.1
(2019-05-21)- Updated dependencies in order to remove possible security vulnerabilities
v0.5.0
(2018-10-24)- Minimum Node.js version lifted from
6.9.5
to8.11.1
- Ignoring parts in the filename after
?
- Minimum Node.js version lifted from
v0.4.0
(2017-08-10)- Minimum Node.js version lifted from
4.2.0
to6.9.5
- Configure code coverage reporting to correctly validate unit test coverage, via
--exclude
configuration - Dependencies are once again up to date
- Minimum Node.js version lifted from
v0.3.1
(2016-08-08)- Test also in Windows, at AppVeyor
v0.3.0
(2016-07-07)- Start using shared ESLint configuration #1
- Test against Node.js v6
v0.2.0
(2016-03-14)- Do not overwrite existing files, instead skip them
v0.1.0
(2016-02-12)- Initial release which can make it happen
Copyright (c) Juga Paazmaya paazmaya@yahoo.com
Licensed under the MIT license.