简体   繁体   中英

How to uglify JavaScript using UglifyJS 2?

I tried to uglify a simple javascript file using UglifyJS2 .

Here are the contents of the file :

//this is simply a sample var
var sampleVar = "xyz";

//lots of comments
//this is just another comment
//such things should not be present in javascript
//waiting to see result after uglifying

//this is simply a sample function
function sampleFunction()
{
  var sampleLocalVar = "xzx";
  if(true)
  {
    //inserting some sample comments
    alert("in if block");
  }
  else
  {
    //inserting some sample comments
    alert("in else block");
  }
}

Here's the command that I'm using to uglify:

uglifyjs -c -m sample.js sample.min.js

Error that I'm receiving :

Dot
Error parsing arguments in : sample.js

You need to specify the output argument ( -o or --output ), as the documentation says:

Specify --output ( -o ) to declare the output file. Otherwise the output goes to STDOUT.

Also, the file to minify (or files to be concatenate and minify) must be specified first, as shown in the usage:

uglifyjs [input files] [options]

What you should be doing is the following:

uglifyjs sample.js -c -m -o sample.min.js

For more information about using UglifyJS2 from the command line, see the documentation .

2 problems:

Firstly, the command line uglifyjs's argument parsing has a bug, so you have to either put the options at the end, or use -- to separate them from the command. For example:

uglifyjs -c -m foo.js     # Will fail Error parsing arguments in : foo.js 
uglifyjs foo.js -c -m     # Will work, printing the compressed
uglifyjs -c -m -- foo.js  # Will also work

Secondly, output goes to standard out by default. Passing more js files as parameters will concatenate them before minifiying. You can use -o to specify the output file, or use normal shell redirection operators ( > , >> , | etc.)

uglifyjs -c -m -- foo.js                # Will output the file to stdout
uglifyjs -c -m -- foo.js > foo.min.js   # Will save the file to foo.min.js
uglifyjs -c -m  -o foo.min.js -- foo.js # Will save the file to foo.min.js
uglifyjs -c -m -- foo.js bar.js         # Will concatenate 2 js files

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM