uglifyjs-webpack-plugin
Advanced tools
Comparing version 0.4.3 to 0.4.4
@@ -53,4 +53,4 @@ /* | ||
files.push.apply(files, compilation.additionalChunkAssets); | ||
var filterdFiles = files.filter(ModuleFilenameHelpers.matchObject.bind(undefined, options)); | ||
filterdFiles.forEach(function (file) { | ||
var filteredFiles = files.filter(ModuleFilenameHelpers.matchObject.bind(undefined, options)); | ||
filteredFiles.forEach(function (file) { | ||
var oldWarnFunction = uglify.AST_Node.warn_function; | ||
@@ -60,177 +60,169 @@ var warnings = []; | ||
try { | ||
var _ret = function () { | ||
var asset = compilation.assets[file]; | ||
if (asset.__UglifyJsPlugin) { | ||
compilation.assets[file] = asset.__UglifyJsPlugin; | ||
return { | ||
v: void 0 | ||
}; | ||
} | ||
var input = void 0; | ||
var inputSourceMap = void 0; | ||
if (options.sourceMap) { | ||
if (asset.sourceAndMap) { | ||
var sourceAndMap = asset.sourceAndMap(); | ||
inputSourceMap = sourceAndMap.map; | ||
input = sourceAndMap.source; | ||
} else { | ||
inputSourceMap = asset.map(); | ||
input = asset.source(); | ||
} | ||
sourceMap = new SourceMapConsumer(inputSourceMap); | ||
uglify.AST_Node.warn_function = function (warning) { | ||
// eslint-disable-line camelcase | ||
var match = /\[.+:([0-9]+),([0-9]+)\]/.exec(warning); | ||
var line = +match[1]; | ||
var column = +match[2]; | ||
var original = sourceMap.originalPositionFor({ | ||
line: line, | ||
column: column | ||
}); | ||
if (!original || !original.source || original.source === file) return; | ||
if (!warningsFilter(original.source)) return; | ||
warnings.push(warning.replace(/\[.+:([0-9]+),([0-9]+)\]/, "") + "[" + requestShortener.shorten(original.source) + ":" + original.line + "," + original.column + "]"); | ||
}; | ||
var asset = compilation.assets[file]; | ||
if (asset.__UglifyJsPlugin) { | ||
compilation.assets[file] = asset.__UglifyJsPlugin; | ||
return; | ||
} | ||
var input = void 0; | ||
var inputSourceMap = void 0; | ||
if (options.sourceMap) { | ||
if (asset.sourceAndMap) { | ||
var sourceAndMap = asset.sourceAndMap(); | ||
inputSourceMap = sourceAndMap.map; | ||
input = sourceAndMap.source; | ||
} else { | ||
inputSourceMap = asset.map(); | ||
input = asset.source(); | ||
uglify.AST_Node.warn_function = function (warning) { | ||
// eslint-disable-line camelcase | ||
warnings.push(warning); | ||
}; | ||
} | ||
uglify.base54.reset(); | ||
var ast = uglify.parse(input, { | ||
filename: file | ||
}); | ||
if (options.compress !== false) { | ||
ast.figure_out_scope(); | ||
var compress = uglify.Compressor(options.compress || { | ||
warnings: false | ||
}); // eslint-disable-line new-cap | ||
ast = compress.compress(ast); | ||
sourceMap = new SourceMapConsumer(inputSourceMap); | ||
uglify.AST_Node.warn_function = function (warning) { | ||
// eslint-disable-line camelcase | ||
var match = /\[.+:([0-9]+),([0-9]+)\]/.exec(warning); | ||
var line = +match[1]; | ||
var column = +match[2]; | ||
var original = sourceMap.originalPositionFor({ | ||
line: line, | ||
column: column | ||
}); | ||
if (!original || !original.source || original.source === file) return; | ||
if (!warningsFilter(original.source)) return; | ||
warnings.push(warning.replace(/\[.+:([0-9]+),([0-9]+)\]/, "") + "[" + requestShortener.shorten(original.source) + ":" + original.line + "," + original.column + "]"); | ||
}; | ||
} else { | ||
input = asset.source(); | ||
uglify.AST_Node.warn_function = function (warning) { | ||
// eslint-disable-line camelcase | ||
warnings.push(warning); | ||
}; | ||
} | ||
uglify.base54.reset(); | ||
var ast = uglify.parse(input, { | ||
filename: file | ||
}); | ||
if (options.compress !== false) { | ||
ast.figure_out_scope(); | ||
var compress = uglify.Compressor(options.compress || { | ||
warnings: false | ||
}); // eslint-disable-line new-cap | ||
ast = compress.compress(ast); | ||
} | ||
if (options.mangle !== false) { | ||
ast.figure_out_scope(options.mangle || {}); | ||
ast.compute_char_frequency(options.mangle || {}); | ||
ast.mangle_names(options.mangle || {}); | ||
if (options.mangle && options.mangle.props) { | ||
uglify.mangle_properties(ast, options.mangle.props); | ||
} | ||
if (options.mangle !== false) { | ||
ast.figure_out_scope(options.mangle || {}); | ||
ast.compute_char_frequency(options.mangle || {}); | ||
ast.mangle_names(options.mangle || {}); | ||
if (options.mangle && options.mangle.props) { | ||
uglify.mangle_properties(ast, options.mangle.props); | ||
} | ||
} | ||
var output = {}; | ||
output.comments = Object.prototype.hasOwnProperty.call(options, "comments") ? options.comments : /^\**!|@preserve|@license/; | ||
output.beautify = options.beautify; | ||
for (var k in options.output) { | ||
output[k] = options.output[k]; | ||
} | ||
var extractedComments = []; | ||
if (options.extractComments) { | ||
var condition = {}; | ||
if (typeof options.extractComments === "string" || options.extractComments instanceof RegExp) { | ||
// extractComments specifies the extract condition and output.comments specifies the preserve condition | ||
condition.preserve = output.comments; | ||
condition.extract = options.extractComments; | ||
} else if (Object.prototype.hasOwnProperty.call(options.extractComments, "condition")) { | ||
// Extract condition is given in extractComments.condition | ||
condition.preserve = output.comments; | ||
condition.extract = options.extractComments.condition; | ||
} else { | ||
// No extract condition is given. Extract comments that match output.comments instead of preserving them | ||
condition.preserve = false; | ||
condition.extract = output.comments; | ||
} | ||
var output = {}; | ||
output.comments = Object.prototype.hasOwnProperty.call(options, "comments") ? options.comments : /^\**!|@preserve|@license/; | ||
output.beautify = options.beautify; | ||
for (var k in options.output) { | ||
output[k] = options.output[k]; | ||
} | ||
var extractedComments = []; | ||
if (options.extractComments) { | ||
(function () { | ||
var condition = {}; | ||
if (typeof options.extractComments === "string" || options.extractComments instanceof RegExp) { | ||
// extractComments specifies the extract condition and output.comments specifies the preserve condition | ||
condition.preserve = output.comments; | ||
condition.extract = options.extractComments; | ||
} else if (Object.prototype.hasOwnProperty.call(options.extractComments, "condition")) { | ||
// Extract condition is given in extractComments.condition | ||
condition.preserve = output.comments; | ||
condition.extract = options.extractComments.condition; | ||
} else { | ||
// No extract condition is given. Extract comments that match output.comments instead of preserving them | ||
condition.preserve = false; | ||
condition.extract = output.comments; | ||
} | ||
// Ensure that both conditions are functions | ||
["preserve", "extract"].forEach(function (key) { | ||
switch (_typeof(condition[key])) { | ||
case "boolean": | ||
var b = condition[key]; | ||
condition[key] = function () { | ||
return b; | ||
}; | ||
break; | ||
case "function": | ||
break; | ||
case "string": | ||
if (condition[key] === "all") { | ||
condition[key] = function () { | ||
return true; | ||
}; | ||
break; | ||
} | ||
var regex = new RegExp(condition[key]); | ||
condition[key] = function (astNode, comment) { | ||
return regex.test(comment.value); | ||
}; | ||
break; | ||
default: | ||
regex = condition[key]; | ||
condition[key] = function (astNode, comment) { | ||
return regex.test(comment.value); | ||
}; | ||
// Ensure that both conditions are functions | ||
["preserve", "extract"].forEach(function (key) { | ||
switch (_typeof(condition[key])) { | ||
case "boolean": | ||
var b = condition[key]; | ||
condition[key] = function () { | ||
return b; | ||
}; | ||
break; | ||
case "function": | ||
break; | ||
case "string": | ||
if (condition[key] === "all") { | ||
condition[key] = function () { | ||
return true; | ||
}; | ||
break; | ||
} | ||
}); | ||
var regex = new RegExp(condition[key]); | ||
condition[key] = function (astNode, comment) { | ||
return regex.test(comment.value); | ||
}; | ||
break; | ||
default: | ||
regex = condition[key]; | ||
condition[key] = function (astNode, comment) { | ||
return regex.test(comment.value); | ||
}; | ||
} | ||
}); | ||
// Redefine the comments function to extract and preserve | ||
// comments according to the two conditions | ||
output.comments = function (astNode, comment) { | ||
if (condition.extract(astNode, comment)) { | ||
extractedComments.push(comment.type === "comment2" ? "/*" + comment.value + "*/" : "//" + comment.value); | ||
} | ||
return condition.preserve(astNode, comment); | ||
}; | ||
})(); | ||
// Redefine the comments function to extract and preserve | ||
// comments according to the two conditions | ||
output.comments = function (astNode, comment) { | ||
if (condition.extract(astNode, comment)) { | ||
extractedComments.push(comment.type === "comment2" ? "/*" + comment.value + "*/" : "//" + comment.value); | ||
} | ||
return condition.preserve(astNode, comment); | ||
}; | ||
} | ||
var map = void 0; | ||
if (options.sourceMap) { | ||
map = uglify.SourceMap({ // eslint-disable-line new-cap | ||
file: file, | ||
root: "" | ||
}); | ||
output.source_map = map; // eslint-disable-line camelcase | ||
} | ||
var stream = uglify.OutputStream(output); // eslint-disable-line new-cap | ||
ast.print(stream); | ||
if (map) map = map + ""; | ||
var stringifiedStream = stream + ""; | ||
var outputSource = map ? new SourceMapSource(stringifiedStream, file, JSON.parse(map), input, inputSourceMap) : new RawSource(stringifiedStream); | ||
if (extractedComments.length > 0) { | ||
var commentsFile = options.extractComments.filename || file + ".LICENSE"; | ||
if (typeof commentsFile === "function") { | ||
commentsFile = commentsFile(file); | ||
} | ||
var map = void 0; | ||
if (options.sourceMap) { | ||
map = uglify.SourceMap({ // eslint-disable-line new-cap | ||
file: file, | ||
root: "" | ||
}); | ||
output.source_map = map; // eslint-disable-line camelcase | ||
} | ||
var stream = uglify.OutputStream(output); // eslint-disable-line new-cap | ||
ast.print(stream); | ||
if (map) map = map + ""; | ||
var stringifiedStream = stream + ""; | ||
var outputSource = map ? new SourceMapSource(stringifiedStream, file, JSON.parse(map), input, inputSourceMap) : new RawSource(stringifiedStream); | ||
if (extractedComments.length > 0) { | ||
var commentsFile = options.extractComments.filename || file + ".LICENSE"; | ||
if (typeof commentsFile === "function") { | ||
commentsFile = commentsFile(file); | ||
} | ||
// Write extracted comments to commentsFile | ||
var commentsSource = new RawSource(extractedComments.join("\n\n") + "\n"); | ||
if (commentsFile in compilation.assets) { | ||
// commentsFile already exists, append new comments... | ||
if (compilation.assets[commentsFile] instanceof ConcatSource) { | ||
compilation.assets[commentsFile].add("\n"); | ||
compilation.assets[commentsFile].add(commentsSource); | ||
} else { | ||
compilation.assets[commentsFile] = new ConcatSource(compilation.assets[commentsFile], "\n", commentsSource); | ||
} | ||
// Write extracted comments to commentsFile | ||
var commentsSource = new RawSource(extractedComments.join("\n\n") + "\n"); | ||
if (commentsFile in compilation.assets) { | ||
// commentsFile already exists, append new comments... | ||
if (compilation.assets[commentsFile] instanceof ConcatSource) { | ||
compilation.assets[commentsFile].add("\n"); | ||
compilation.assets[commentsFile].add(commentsSource); | ||
} else { | ||
compilation.assets[commentsFile] = commentsSource; | ||
compilation.assets[commentsFile] = new ConcatSource(compilation.assets[commentsFile], "\n", commentsSource); | ||
} | ||
} else { | ||
compilation.assets[commentsFile] = commentsSource; | ||
} | ||
// Add a banner to the original file | ||
if (options.extractComments.banner !== false) { | ||
var banner = options.extractComments.banner || "For license information please see " + commentsFile; | ||
if (typeof banner === "function") { | ||
banner = banner(commentsFile); | ||
} | ||
if (banner) { | ||
outputSource = new ConcatSource("/*! " + banner + " */\n", outputSource); | ||
} | ||
// Add a banner to the original file | ||
if (options.extractComments.banner !== false) { | ||
var banner = options.extractComments.banner || "For license information please see " + commentsFile; | ||
if (typeof banner === "function") { | ||
banner = banner(commentsFile); | ||
} | ||
if (banner) { | ||
outputSource = new ConcatSource("/*! " + banner + " */\n", outputSource); | ||
} | ||
} | ||
asset.__UglifyJsPlugin = compilation.assets[file] = outputSource; | ||
if (warnings.length > 0) { | ||
compilation.warnings.push(new Error(file + " from UglifyJs\n" + warnings.join("\n"))); | ||
} | ||
}(); | ||
if ((typeof _ret === "undefined" ? "undefined" : _typeof(_ret)) === "object") return _ret.v; | ||
} | ||
asset.__UglifyJsPlugin = compilation.assets[file] = outputSource; | ||
if (warnings.length > 0) { | ||
compilation.warnings.push(new Error(file + " from UglifyJs\n" + warnings.join("\n"))); | ||
} | ||
} catch (err) { | ||
@@ -237,0 +229,0 @@ if (err.line) { |
{ | ||
"name": "uglifyjs-webpack-plugin", | ||
"version": "0.4.3", | ||
"version": "0.4.4", | ||
"description": "UglifyJS plugin for webpack", | ||
@@ -50,3 +50,3 @@ "main": "./dist", | ||
"source-map": "^0.5.6", | ||
"webpack-sources": "^0.2.3" | ||
"webpack-sources": "^1.0.1" | ||
}, | ||
@@ -53,0 +53,0 @@ "devDependencies": { |
@@ -34,3 +34,3 @@ [![npm][npm]][npm-url] | ||
**Important!** The plugin has a peer dependency to uglify-js, so in order to use the plugin, also uglify-js has to be installed. The currently (2017/1/25) available uglify-js npm packages, however, do not support minification of ES6 code. In order to support ES6, an ES6-capable, a.k.a. _harmony_, version of UglifyJS has to be provided. | ||
**Important!** The plugin has a peer dependency to uglify-js, so in order to use the plugin, also uglify-js has to be installed. The currently (2017/1/25) available uglify-js npm packages; however, do not support minification of ES6 code. In order to support ES6, an ES6-capable, a.k.a. _harmony_, version of UglifyJS has to be provided. | ||
@@ -40,3 +40,3 @@ If your minification target is ES6: | ||
```bash | ||
yarn add git://github.com/mishoo/UglifyJS2#harmony --dev | ||
yarn add git://github.com/mishoo/UglifyJS2#harmony-v2.8.22 --dev | ||
``` | ||
@@ -43,0 +43,0 @@ |
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
24245
266
2
- Removedsource-list-map@1.1.2(transitive)
- Removedwebpack-sources@0.2.3(transitive)
Updatedwebpack-sources@^1.0.1