terser-webpack-plugin
Advanced tools
Comparing version 3.0.7 to 3.0.8
@@ -5,2 +5,9 @@ # Changelog | ||
### [3.0.8](https://github.com/webpack-contrib/terser-webpack-plugin/compare/v3.0.7...v3.0.8) (2020-07-27) | ||
### Bug Fixes | ||
* compatibility with child compilations ([9da4add](https://github.com/webpack-contrib/terser-webpack-plugin/commit/9da4add75390a583366b7f030d366c437a52137b)) | ||
### [3.0.7](https://github.com/webpack-contrib/terser-webpack-plugin/compare/v3.0.6...v3.0.7) (2020-07-16) | ||
@@ -7,0 +14,0 @@ |
@@ -151,7 +151,2 @@ "use strict"; | ||
static hasAsset(commentFilename, compilation) { | ||
const assetFilenames = Object.keys(compilation.assets).map(assetFilename => TerserPlugin.removeQueryString(assetFilename)); | ||
return assetFilenames.includes(TerserPlugin.removeQueryString(commentFilename)); | ||
} | ||
static isWebpack4() { | ||
@@ -221,7 +216,2 @@ return _webpack.version[0] === '4'; | ||
commentsFilename = compilation.getPath(commentsFilename, data); | ||
if (TerserPlugin.hasAsset(commentsFilename, compilation)) { | ||
compilation.errors.push(new Error(`The comment file "${TerserPlugin.removeQueryString(commentsFilename)}" conflicts with an existing asset, this may lead to code corruption, please use a different name`)); | ||
yield false; | ||
} | ||
} | ||
@@ -255,3 +245,3 @@ | ||
const hasExtractedComments = commentsFilename && extractedComments && extractedComments.length > 0; | ||
const hasBannerForExtractedComments = hasExtractedComments && this.options.extractComments.banner !== false; | ||
const hasBannerForExtractedComments = this.options.extractComments.banner !== false; | ||
let outputSource; | ||
@@ -274,12 +264,6 @@ let shebang; | ||
if (hasExtractedComments) { | ||
if (!allExtractedComments[commentsFilename]) { | ||
// eslint-disable-next-line no-param-reassign | ||
allExtractedComments[commentsFilename] = []; | ||
} // eslint-disable-next-line no-param-reassign | ||
let banner; // Add a banner to the original file | ||
allExtractedComments[commentsFilename] = allExtractedComments[commentsFilename].concat(extractedComments); // Add a banner to the original file | ||
if (hasBannerForExtractedComments) { | ||
let banner = this.options.extractComments.banner || `For license information please see ${_path.default.relative(_path.default.dirname(file), commentsFilename).replace(/\\/g, '/')}`; | ||
banner = this.options.extractComments.banner || `For license information please see ${_path.default.relative(_path.default.dirname(file), commentsFilename).replace(/\\/g, '/')}`; | ||
@@ -294,2 +278,27 @@ if (typeof banner === 'function') { | ||
} | ||
if (!allExtractedComments[commentsFilename]) { | ||
// eslint-disable-next-line no-param-reassign | ||
allExtractedComments[commentsFilename] = new Set(); | ||
} | ||
extractedComments.forEach(comment => { | ||
// Avoid re-adding banner | ||
// Developers can use different banner for different names, but this setting should be avoided, it is not safe | ||
if (banner && comment === `/*! ${banner} */`) { | ||
return; | ||
} | ||
allExtractedComments[commentsFilename].add(comment); | ||
}); // Extracted comments from child compilation | ||
const previousExtractedComments = compilation.assets[commentsFilename]; | ||
if (previousExtractedComments) { | ||
const previousExtractedCommentsSource = previousExtractedComments.source(); // Restore original comments and re-add them | ||
previousExtractedCommentsSource.replace(/\n$/, '').split('\n\n').forEach(comment => { | ||
allExtractedComments[commentsFilename].add(comment); | ||
}); | ||
} | ||
} // Updating assets | ||
@@ -493,5 +502,5 @@ // eslint-disable-next-line no-param-reassign | ||
Object.keys(allExtractedComments).forEach(commentsFilename => { | ||
const extractedComments = new Set([...allExtractedComments[commentsFilename].sort()]); // eslint-disable-next-line no-param-reassign | ||
const extractedComments = Array.from(allExtractedComments[commentsFilename]).sort().join('\n\n'); // eslint-disable-next-line no-param-reassign | ||
compilation.assets[commentsFilename] = new _webpackSources.RawSource(`${Array.from(extractedComments).join('\n\n')}\n`); | ||
compilation.assets[commentsFilename] = new _webpackSources.RawSource(`${extractedComments}\n`); | ||
}); | ||
@@ -498,0 +507,0 @@ return Promise.resolve(); |
{ | ||
"name": "terser-webpack-plugin", | ||
"version": "3.0.7", | ||
"version": "3.0.8", | ||
"description": "Terser plugin for webpack", | ||
@@ -67,3 +67,3 @@ "license": "MIT", | ||
"del-cli": "^3.0.1", | ||
"eslint": "^7.4.0", | ||
"eslint": "^7.5.0", | ||
"eslint-config-prettier": "^6.11.0", | ||
@@ -80,3 +80,4 @@ "eslint-plugin-import": "^2.21.2", | ||
"uglify-js": "^3.10.0", | ||
"webpack": "^4.43.0" | ||
"webpack": "^4.44.0", | ||
"worker-loader": "^2.0.0" | ||
}, | ||
@@ -83,0 +84,0 @@ "keywords": [ |
@@ -520,2 +520,4 @@ <div align="center"> | ||
> ⚠️ We highly recommend using the `txt` extension. Using `js`/`cjs`/`mjs` extensions may conflict with existing assets which leads to broken code. | ||
**webpack.config.js** | ||
@@ -522,0 +524,0 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
68924
874
732
26