update documentation
This commit is contained in:
parent
9812cba843
commit
ca71d8846c
114
README.md
114
README.md
|
|
@ -231,29 +231,12 @@ console.log(x.something());
|
||||||
In the above code, `foo`, `bar`, `baz`, `moo` and `boo` will be replaced
|
In the above code, `foo`, `bar`, `baz`, `moo` and `boo` will be replaced
|
||||||
with single characters, while `something()` will be left as is.
|
with single characters, while `something()` will be left as is.
|
||||||
|
|
||||||
In order for this to be of any use, we should avoid mangling standard JS
|
In order for this to be of any use, we avoid mangling standard JS names by
|
||||||
names. For instance, if your code would contain `x.length = 10`, then
|
default (`--mangle-props builtins` to override).
|
||||||
`length` becomes a candidate for mangling and it will be mangled throughout
|
|
||||||
the code, regardless if it's being used as part of your own objects or
|
|
||||||
accessing an array's length. To avoid that, you can use `--reserved-file`
|
|
||||||
to pass a filename that should contain the names to be excluded from
|
|
||||||
mangling. This file can be used both for excluding variable names and
|
|
||||||
property names. It could look like this, for example:
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"vars": [ "define", "require", ... ],
|
|
||||||
"props": [ "length", "prototype", ... ]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
`--reserved-file` can be an array of file names (either a single
|
|
||||||
comma-separated argument, or you can pass multiple `--reserved-file`
|
|
||||||
arguments) — in this case it will exclude names from all those files.
|
|
||||||
|
|
||||||
A default exclusion file is provided in `tools/domprops.json` which should
|
A default exclusion file is provided in `tools/domprops.json` which should
|
||||||
cover most standard JS and DOM properties defined in various browsers. Pass
|
cover most standard JS and DOM properties defined in various browsers. Pass
|
||||||
`--reserve-domprops` to read that in.
|
`--mangle-props domprops` to disable this feature.
|
||||||
|
|
||||||
You can also use a regular expression to define which property names should be
|
You can also use a regular expression to define which property names should be
|
||||||
mangled. For example, `--mangle-props regex=/^_/` will only mangle property
|
mangled. For example, `--mangle-props regex=/^_/` will only mangle property
|
||||||
|
|
@ -261,9 +244,9 @@ names that start with an underscore.
|
||||||
|
|
||||||
When you compress multiple files using this option, in order for them to
|
When you compress multiple files using this option, in order for them to
|
||||||
work together in the end we need to ensure somehow that one property gets
|
work together in the end we need to ensure somehow that one property gets
|
||||||
mangled to the same name in all of them. For this, pass `--name-cache
|
mangled to the same name in all of them. For this, pass `--name-cache filename.json`
|
||||||
filename.json` and UglifyJS will maintain these mappings in a file which can
|
and UglifyJS will maintain these mappings in a file which can then be reused.
|
||||||
then be reused. It should be initially empty. Example:
|
It should be initially empty. Example:
|
||||||
|
|
||||||
```
|
```
|
||||||
rm -f /tmp/cache.json # start fresh
|
rm -f /tmp/cache.json # start fresh
|
||||||
|
|
@ -587,16 +570,16 @@ SpiderMonkey AST. It has a small CLI utility that parses one file and dumps
|
||||||
the AST in JSON on the standard output. To use UglifyJS to mangle and
|
the AST in JSON on the standard output. To use UglifyJS to mangle and
|
||||||
compress that:
|
compress that:
|
||||||
|
|
||||||
acorn file.js | uglifyjs --spidermonkey -m -c
|
acorn file.js | uglifyjs -p spidermonkey -m -c
|
||||||
|
|
||||||
The `--spidermonkey` option tells UglifyJS that all input files are not
|
The `-p spidermonkey` option tells UglifyJS that all input files are not
|
||||||
JavaScript, but JS code described in SpiderMonkey AST in JSON. Therefore we
|
JavaScript, but JS code described in SpiderMonkey AST in JSON. Therefore we
|
||||||
don't use our own parser in this case, but just transform that AST into our
|
don't use our own parser in this case, but just transform that AST into our
|
||||||
internal AST.
|
internal AST.
|
||||||
|
|
||||||
### Use Acorn for parsing
|
### Use Acorn for parsing
|
||||||
|
|
||||||
More for fun, I added the `--acorn` option which will use Acorn to do all
|
More for fun, I added the `-p acorn` option which will use Acorn to do all
|
||||||
the parsing. If you pass this option, UglifyJS will `require("acorn")`.
|
the parsing. If you pass this option, UglifyJS will `require("acorn")`.
|
||||||
|
|
||||||
Acorn is really fast (e.g. 250ms instead of 380ms on some 650K code), but
|
Acorn is really fast (e.g. 250ms instead of 380ms on some 650K code), but
|
||||||
|
|
@ -654,89 +637,62 @@ There's a single toplevel function which combines all the steps. If you
|
||||||
don't need additional customization, you might want to go with `minify`.
|
don't need additional customization, you might want to go with `minify`.
|
||||||
Example:
|
Example:
|
||||||
```javascript
|
```javascript
|
||||||
var result = UglifyJS.minify("/path/to/file.js");
|
var result = UglifyJS.minify("var b = function() {};");
|
||||||
console.log(result.code); // minified output
|
console.log(result.code); // minified output
|
||||||
// if you need to pass code instead of file name
|
|
||||||
var result = UglifyJS.minify("var b = function() {};", {fromString: true});
|
|
||||||
```
|
```
|
||||||
|
|
||||||
You can also compress multiple files:
|
You can also compress multiple files:
|
||||||
```javascript
|
```javascript
|
||||||
var result = UglifyJS.minify([ "file1.js", "file2.js", "file3.js" ]);
|
var result = UglifyJS.minify({
|
||||||
|
"file1.js": "var a = function() {};",
|
||||||
|
"file2.js": "var b = function() {};"
|
||||||
|
});
|
||||||
console.log(result.code);
|
console.log(result.code);
|
||||||
```
|
```
|
||||||
|
|
||||||
To generate a source map:
|
To generate a source map:
|
||||||
```javascript
|
```javascript
|
||||||
var result = UglifyJS.minify([ "file1.js", "file2.js", "file3.js" ], {
|
var result = UglifyJS.minify({"file1.js": "var a = function() {};"}, {
|
||||||
outSourceMap: "out.js.map"
|
sourceMap: {
|
||||||
|
filename: "out.js",
|
||||||
|
url: "out.js.map"
|
||||||
|
}
|
||||||
});
|
});
|
||||||
console.log(result.code); // minified output
|
console.log(result.code); // minified output
|
||||||
console.log(result.map);
|
console.log(result.map); // source map
|
||||||
```
|
|
||||||
|
|
||||||
To generate a source map with the fromString option, you can also use an object:
|
|
||||||
```javascript
|
|
||||||
var result = UglifyJS.minify({"file1.js": "var a = function() {};"}, {
|
|
||||||
outSourceMap: "out.js.map",
|
|
||||||
outFileName: "out.js",
|
|
||||||
fromString: true
|
|
||||||
});
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Note that the source map is not saved in a file, it's just returned in
|
Note that the source map is not saved in a file, it's just returned in
|
||||||
`result.map`. The value passed for `outSourceMap` is only used to set
|
`result.map`. The value passed for `sourceMap.url` is only used to set
|
||||||
`//# sourceMappingURL=out.js.map` in `result.code`. The value of
|
`//# sourceMappingURL=out.js.map` in `result.code`. The value of
|
||||||
`outFileName` is only used to set `file` attribute in source map file.
|
`filename` is only used to set `file` attribute (see [the spec][sm-spec])
|
||||||
|
in source map file.
|
||||||
|
|
||||||
The `file` attribute in the source map (see [the spec][sm-spec]) will
|
You can set option `sourceMap.url` to be `"inline"` and source map will
|
||||||
use `outFileName` firstly, if it's falsy, then will be deduced from
|
|
||||||
`outSourceMap` (by removing `'.map'`).
|
|
||||||
|
|
||||||
You can set option `sourceMapInline` to be `true` and source map will
|
|
||||||
be appended to code.
|
be appended to code.
|
||||||
|
|
||||||
You can also specify sourceRoot property to be included in source map:
|
You can also specify sourceRoot property to be included in source map:
|
||||||
```javascript
|
```javascript
|
||||||
var result = UglifyJS.minify([ "file1.js", "file2.js", "file3.js" ], {
|
var result = UglifyJS.minify({"file1.js": "var a = function() {};"}, {
|
||||||
outSourceMap: "out.js.map",
|
sourceMap: {
|
||||||
sourceRoot: "http://example.com/src"
|
root: "http://example.com/src",
|
||||||
|
url: "out.js.map"
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
If you're compressing compiled JavaScript and have a source map for it, you
|
If you're compressing compiled JavaScript and have a source map for it, you
|
||||||
can use the `inSourceMap` argument:
|
can use `sourceMap.content`:
|
||||||
```javascript
|
```javascript
|
||||||
var result = UglifyJS.minify("compiled.js", {
|
var result = UglifyJS.minify({"compiled.js": "compiled code"}, {
|
||||||
inSourceMap: "compiled.js.map",
|
sourceMap: {
|
||||||
outSourceMap: "minified.js.map"
|
content: "content from compiled.js.map",
|
||||||
|
url: "minified.js.map"
|
||||||
|
}
|
||||||
});
|
});
|
||||||
// same as before, it returns `code` and `map`
|
// same as before, it returns `code` and `map`
|
||||||
```
|
```
|
||||||
|
|
||||||
If your input source map is not in a file, you can pass it in as an object
|
If you're using the `X-SourceMap` header instead, you can just omit `sourceMap.url`.
|
||||||
using the `inSourceMap` argument:
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
var result = UglifyJS.minify("compiled.js", {
|
|
||||||
inSourceMap: JSON.parse(my_source_map_string),
|
|
||||||
outSourceMap: "minified.js.map"
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
The `inSourceMap` is only used if you also request `outSourceMap` (it makes
|
|
||||||
no sense otherwise).
|
|
||||||
|
|
||||||
To set the source map url, use the `sourceMapUrl` option.
|
|
||||||
If you're using the X-SourceMap header instead, you can just set the `sourceMapUrl` option to false.
|
|
||||||
Defaults to outSourceMap:
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
var result = UglifyJS.minify([ "file1.js" ], {
|
|
||||||
outSourceMap: "out.js.map",
|
|
||||||
sourceMapUrl: "localhost/out.js.map"
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
Other options:
|
Other options:
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user