настройка webpack
This commit is contained in:
57
node_modules/webpack/lib/JsonGenerator.js
generated
vendored
Normal file
57
node_modules/webpack/lib/JsonGenerator.js
generated
vendored
Normal file
@ -0,0 +1,57 @@
|
||||
/*
|
||||
MIT License http://www.opensource.org/licenses/mit-license.php
|
||||
Author Tobias Koppers @sokra
|
||||
*/
|
||||
"use strict";
|
||||
|
||||
const { ConcatSource, RawSource } = require("webpack-sources");
|
||||
|
||||
const stringifySafe = data => {
|
||||
const stringified = JSON.stringify(data);
|
||||
if (!stringified) {
|
||||
return undefined; // Invalid JSON
|
||||
}
|
||||
|
||||
return stringified.replace(/\u2028|\u2029/g, str =>
|
||||
str === "\u2029" ? "\\u2029" : "\\u2028"
|
||||
); // invalid in JavaScript but valid JSON
|
||||
};
|
||||
|
||||
class JsonGenerator {
|
||||
generate(module, dependencyTemplates, runtimeTemplate) {
|
||||
const source = new ConcatSource();
|
||||
const data = module.buildInfo.jsonData;
|
||||
if (data === undefined) {
|
||||
return new RawSource(
|
||||
runtimeTemplate.missingModuleStatement({
|
||||
request: module.rawRequest
|
||||
})
|
||||
);
|
||||
}
|
||||
let finalJson;
|
||||
if (
|
||||
Array.isArray(module.buildMeta.providedExports) &&
|
||||
!module.isUsed("default")
|
||||
) {
|
||||
// Only some exports are used: We can optimize here, by only generating a part of the JSON
|
||||
const reducedJson = {};
|
||||
for (const exportName of module.buildMeta.providedExports) {
|
||||
if (exportName === "default") continue;
|
||||
const used = module.isUsed(exportName);
|
||||
if (used) {
|
||||
reducedJson[used] = data[exportName];
|
||||
}
|
||||
}
|
||||
finalJson = reducedJson;
|
||||
} else {
|
||||
finalJson = data;
|
||||
}
|
||||
// Use JSON because JSON.parse() is much faster than JavaScript evaluation
|
||||
const jsonSource = JSON.stringify(stringifySafe(finalJson));
|
||||
const jsonExpr = `JSON.parse(${jsonSource})`;
|
||||
source.add(`${module.moduleArgument}.exports = ${jsonExpr};`);
|
||||
return source;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = JsonGenerator;
|
||||
Reference in New Issue
Block a user