Don't filter shebangs when using the 'some' comment filter
Also clarify documentation a bit more about using regexp as filter
This commit is contained in:
committed by
Richard van Velzen
parent
266ddd9639
commit
8d74f34373
@@ -98,8 +98,8 @@ The available options are:
|
|||||||
"@preserve". You can optionally pass one of the
|
"@preserve". You can optionally pass one of the
|
||||||
following arguments to this flag:
|
following arguments to this flag:
|
||||||
- "all" to keep all comments
|
- "all" to keep all comments
|
||||||
- a valid JS regexp (needs to start with a
|
- a valid JS RegExp like `/foo/` or `/^!/` to
|
||||||
slash) to keep only comments that match.
|
keep only matching comments.
|
||||||
Note that currently not *all* comments can be
|
Note that currently not *all* comments can be
|
||||||
kept when compression is on, because of dead
|
kept when compression is on, because of dead
|
||||||
code removal or cascading statements into
|
code removal or cascading statements into
|
||||||
@@ -855,10 +855,11 @@ which we care about here are `source_map` and `comments`.
|
|||||||
#### Keeping comments in the output
|
#### Keeping comments in the output
|
||||||
|
|
||||||
In order to keep certain comments in the output you need to pass the
|
In order to keep certain comments in the output you need to pass the
|
||||||
`comments` option. Pass a RegExp, boolean or a function. Stringified options
|
`comments` option. Pass a RegExp (as string starting and closing with `/`
|
||||||
|
or pass a RegExp object), a boolean or a function. Stringified options
|
||||||
`all` and `some` can be passed too, where `some` behaves like it's cli
|
`all` and `some` can be passed too, where `some` behaves like it's cli
|
||||||
equivalent `--comments` without passing a value. If you pass a RegExp,
|
equivalent `--comments` without passing a value. If you pass a RegExp,
|
||||||
only those comments whose body matches the regexp will be kept. Note that body
|
only those comments whose body matches the RegExp will be kept. Note that body
|
||||||
means without the initial `//` or `/*`. If you pass a function, it will be
|
means without the initial `//` or `/*`. If you pass a function, it will be
|
||||||
called for every comment in the tree and will receive two arguments: the
|
called for every comment in the tree and will receive two arguments: the
|
||||||
node that the comment is attached to, and the comment token itself.
|
node that the comment is attached to, and the comment token itself.
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ Use -c with no argument to use the default compression options.")
|
|||||||
By default this works like Google Closure, keeping JSDoc-style comments that contain \"@license\" or \"@preserve\". \
|
By default this works like Google Closure, keeping JSDoc-style comments that contain \"@license\" or \"@preserve\". \
|
||||||
You can optionally pass one of the following arguments to this flag:\n\
|
You can optionally pass one of the following arguments to this flag:\n\
|
||||||
- \"all\" to keep all comments\n\
|
- \"all\" to keep all comments\n\
|
||||||
- a valid JS regexp (needs to start with a slash) to keep only comments that match.\n\
|
- a valid JS RegExp like `/foo/`or `/^!/` to keep only matching comments.\n\
|
||||||
\
|
\
|
||||||
Note that currently not *all* comments can be kept when compression is on, \
|
Note that currently not *all* comments can be kept when compression is on, \
|
||||||
because of dead code removal or cascading statements into sequences.")
|
because of dead code removal or cascading statements into sequences.")
|
||||||
|
|||||||
@@ -101,6 +101,7 @@ function OutputStream(options) {
|
|||||||
// multiline comment
|
// multiline comment
|
||||||
return /@preserve|@license|@cc_on/i.test(text);
|
return /@preserve|@license|@cc_on/i.test(text);
|
||||||
}
|
}
|
||||||
|
return type == "comment5";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (options.comments){ // NOTE includes "all" option
|
else if (options.comments){ // NOTE includes "all" option
|
||||||
|
|||||||
@@ -57,4 +57,9 @@ describe("comment filters", function() {
|
|||||||
|
|
||||||
assert.strictEqual(ast.print_to_string({comments: f}), "#!Random comment\n//test1\n/*test2*/\n");
|
assert.strictEqual(ast.print_to_string({comments: f}), "#!Random comment\n//test1\n/*test2*/\n");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("Should never be able to filter comment5 when using 'some' as filter", function() {
|
||||||
|
var ast = UglifyJS.parse("#!foo\n//foo\n/*@preserve*/\n/* please hide me */");
|
||||||
|
assert.strictEqual(ast.print_to_string({comments: "some"}), "#!foo\n/*@preserve*/\n");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user