From 08bbfb94bba9f166bea169b02364fcb794c8af31 Mon Sep 17 00:00:00 2001 From: cap-Bernardito Date: Thu, 10 Dec 2020 20:05:21 +0300 Subject: [PATCH 1/2] fix: serializing big strings in sourceMap --- package-lock.json | 6 ++++ package.json | 1 + src/index.js | 2 +- src/loader.js | 5 ++- test/TestCases.test.js | 4 +++ .../serializingBigStrings/webpack.config.js | 35 +++++++++++++++++++ 6 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 test/cases/serializingBigStrings/webpack.config.js diff --git a/package-lock.json b/package-lock.json index f91a1106..5fe1df23 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3345,6 +3345,12 @@ "multicast-dns-service-types": "^1.1.0" } }, + "bootstrap": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.5.3.tgz", + "integrity": "sha512-o9ppKQioXGqhw8Z7mah6KdTYpNQY//tipnkxppWhPbiSWdD+1raYsnhwEZjkTHYbGee4cVQ0Rx65EhOY/HNLcQ==", + "dev": true + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", diff --git a/package.json b/package.json index 91d39533..2346329c 100644 --- a/package.json +++ b/package.json @@ -57,6 +57,7 @@ "@webpack-contrib/eslint-config-webpack": "^3.0.0", "babel-eslint": "^10.1.0", "babel-jest": "^26.6.3", + "bootstrap": "^4.5.3", "cross-env": "^7.0.2", "css-loader": "^5.0.1", "del": "^6.0.0", diff --git a/src/index.js b/src/index.js index 95c5798e..6e791e57 100644 --- a/src/index.js +++ b/src/index.js @@ -685,7 +685,7 @@ class MiniCssExtractPlugin { new SourceMapSource( content, m.readableIdentifier(requestShortener), - m.sourceMap + m.sourceMap.toString() ) ); } else { diff --git a/src/loader.js b/src/loader.js index bff3e867..c7370666 100644 --- a/src/loader.js +++ b/src/loader.js @@ -239,7 +239,10 @@ export function pitch(request) { context: module.context, content: Buffer.from(content), media, - sourceMap, + sourceMap: sourceMap + ? Buffer.from(JSON.stringify(sourceMap)) + : // eslint-disable-next-line no-undefined + undefined, }; }); } diff --git a/test/TestCases.test.js b/test/TestCases.test.js index 16308165..61bb19e2 100644 --- a/test/TestCases.test.js +++ b/test/TestCases.test.js @@ -98,6 +98,10 @@ describe('TestCases', () => { if (!/^(\.|_)/.test(directory)) { // eslint-disable-next-line no-loop-func it(`${directory} should compile to the expected result`, (done) => { + if (directory === 'serializingBigStrings') { + clearDirectory(path.resolve(__dirname, '../node_modules/.cache')); + } + const directoryForCase = path.resolve(casesDirectory, directory); const outputDirectoryForCase = path.resolve(outputDirectory, directory); // eslint-disable-next-line import/no-dynamic-require, global-require diff --git a/test/cases/serializingBigStrings/webpack.config.js b/test/cases/serializingBigStrings/webpack.config.js new file mode 100644 index 00000000..4117185e --- /dev/null +++ b/test/cases/serializingBigStrings/webpack.config.js @@ -0,0 +1,35 @@ +import Self from '../../../src/index'; + +module.exports = { + cache: { type: 'filesystem' }, + entry: 'bootstrap/dist/css/bootstrap.css', + module: { + rules: [ + { + test: /\.css$/, + use: [ + Self.loader, + { + loader: 'css-loader', + options: { + sourceMap: true, + }, + }, + ], + }, + ], + }, + + plugins: [ + new Self(), + { + apply(compiler) { + compiler.hooks.infrastructureLog.tap('test', (origin, type, args) => { + if (type === 'warn' || type === 'error') { + throw new Error(`<${type}> [${origin}] ${args.toString()}`); + } + }); + }, + }, + ], +}; From e2df02b09162be14771b1f4bc9843a9226053bd7 Mon Sep 17 00:00:00 2001 From: cap-Bernardito Date: Thu, 10 Dec 2020 20:08:15 +0300 Subject: [PATCH 2/2] fix: serializing big strings in sourceMap --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5fe1df23..64c70367 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7919,9 +7919,9 @@ "dev": true }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", + "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", "dev": true }, "inquirer": {