From 9915088cbc14d47d02f4acfdc74675ea2887f7f9 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Tue, 16 Jul 2019 13:33:45 +0200 Subject: [PATCH] improvements --- lib/RuntimeTemplate.js | 3 ++- lib/asset/AssetJavascriptGenerator.js | 11 ++++------- lib/asset/AssetModulesPlugin.js | 18 +++--------------- test/__snapshots__/StatsTestCases.test.js.snap | 6 +++--- .../file-loader/webpack.config.js | 3 --- 5 files changed, 12 insertions(+), 29 deletions(-) diff --git a/lib/RuntimeTemplate.js b/lib/RuntimeTemplate.js index 1bbe0cfae..5e4bbd27a 100644 --- a/lib/RuntimeTemplate.js +++ b/lib/RuntimeTemplate.js @@ -9,6 +9,7 @@ const RuntimeGlobals = require("./RuntimeGlobals"); const Template = require("./Template"); const propertyAccess = require("./util/propertyAccess"); +/** @typedef {import("../declarations/WebpackOptions").OutputOptions} OutputOptions */ /** @typedef {import("./AsyncDependenciesBlock")} AsyncDependenciesBlock */ /** @typedef {import("./ChunkGraph")} ChunkGraph */ /** @typedef {import("./Module")} Module */ @@ -25,7 +26,7 @@ const arrayEquals = (a, b) => { class RuntimeTemplate { /** - * @param {TODO} outputOptions the compilation output options + * @param {OutputOptions} outputOptions the compilation output options * @param {RequestShortener} requestShortener the request shortener */ constructor(outputOptions, requestShortener) { diff --git a/lib/asset/AssetJavascriptGenerator.js b/lib/asset/AssetJavascriptGenerator.js index de1992649..495cdc285 100644 --- a/lib/asset/AssetJavascriptGenerator.js +++ b/lib/asset/AssetJavascriptGenerator.js @@ -40,7 +40,7 @@ class AssetJavascriptGenerator extends Generator { * @returns {Source} generated code */ generate(module, { chunkGraph, runtimeTemplate, runtimeRequirements }) { - const filename = module.resource; + const filename = module.nameForCondition(); const { assetModuleFilename } = runtimeTemplate.outputOptions; const url = this.mainTemplate.getAssetPath(assetModuleFilename, { module, @@ -67,12 +67,9 @@ class AssetJavascriptGenerator extends Generator { * @returns {number} estimate size of the module */ getSize(module, type) { - const originalSource = module._cachedSources.get("javascript").source; - - if (!originalSource) { - return 0; - } - return originalSource.size(); + // it's only estimated so this number is probably fine + // Example: m.exports=r.p+"0123456789012345678901.ext" + return 42; } } diff --git a/lib/asset/AssetModulesPlugin.js b/lib/asset/AssetModulesPlugin.js index 0f9fc0146..aee5ebcc6 100644 --- a/lib/asset/AssetModulesPlugin.js +++ b/lib/asset/AssetModulesPlugin.js @@ -6,7 +6,6 @@ "use strict"; const Generator = require("../Generator"); -const RuntimeModule = require("../RuntimeModule"); const { compareModulesById } = require("../util/comparators"); const AssetGenerator = require("./AssetGenerator"); const AssetJavascriptGenerator = require("./AssetJavascriptGenerator"); @@ -24,11 +23,7 @@ const AssetParser = require("./AssetParser"); const type = "asset"; const plugin = "AssetModulesPlugin"; -class AssetModulesPlugin extends RuntimeModule { - constructor() { - super("url"); - } - +class AssetModulesPlugin { /** * @param {Compiler} compiler webpack compiler * @returns {void} @@ -51,7 +46,7 @@ class AssetModulesPlugin extends RuntimeModule { compilation.mainTemplate.hooks.renderManifest.tap( plugin, (result, options) => { - const { mainTemplate, chunkGraph, moduleGraph } = compilation; + const { chunkGraph, moduleGraph } = compilation; const { chunk, moduleTemplates, @@ -75,9 +70,7 @@ class AssetModulesPlugin extends RuntimeModule { chunk, chunkGraph, moduleGraph, - mainTemplate, dependencyTemplates, - outputOptions, runtimeTemplate }), filenameTemplate, @@ -99,15 +92,10 @@ class AssetModulesPlugin extends RuntimeModule { ); } - /* eslint-disable valid-jsdoc */ - // not compatible with Intersection /** - * @typedef {{outputOptions: TODO}} OutputOptionsType - * @typedef {{mainTemplate: MainTemplate}} MainTemplateType - * @typedef {RenderContext & MainTemplateType & OutputOptionsType} RenderContextType * @param {Module} module the module to render * @param {ModuleTemplate} moduleTemplate the module template - * @param {RenderContextType} renderContext the render context + * @param {RenderContext} renderContext the render context * @returns {Source} the rendered source */ /* eslint-enable */ diff --git a/test/__snapshots__/StatsTestCases.test.js.snap b/test/__snapshots__/StatsTestCases.test.js.snap index 387b381d2..b617d6b3e 100644 --- a/test/__snapshots__/StatsTestCases.test.js.snap +++ b/test/__snapshots__/StatsTestCases.test.js.snap @@ -141,9 +141,9 @@ Built at: 1970-04-20 12:42:42 c9fc77a744ca46b7fe30.jpg 10.9 KiB {179} [emitted] main Entrypoint main = bundle.js c9fc77a744ca46b7fe30.jpg 2971bea717d1ea440379.png 44af8fe384aadccba06e.svg [10] ./index.js 111 bytes {179} [built] -[359] ./images/file.jpg 10.9 KiB (asset) 68 bytes (javascript) {179} [built] -[440] ./images/file.png 25.9 KiB (asset) 68 bytes (javascript) {179} [built] -[811] ./images/file.svg 656 bytes (asset) 68 bytes (javascript) {179} [built] +[359] ./images/file.jpg 10.9 KiB (asset) 42 bytes (javascript) {179} [built] +[440] ./images/file.png 25.9 KiB (asset) 42 bytes (javascript) {179} [built] +[811] ./images/file.svg 656 bytes (asset) 42 bytes (javascript) {179} [built] + 4 hidden modules" `; diff --git a/test/configCases/asset-modules/file-loader/webpack.config.js b/test/configCases/asset-modules/file-loader/webpack.config.js index a16bd9985..6455cb7d9 100644 --- a/test/configCases/asset-modules/file-loader/webpack.config.js +++ b/test/configCases/asset-modules/file-loader/webpack.config.js @@ -1,8 +1,5 @@ module.exports = { mode: "development", - output: { - assetModuleFilename: "images/file[ext]" - }, module: { rules: [ {