improvements

This commit is contained in:
Tobias Koppers 2019-07-16 13:33:45 +02:00
parent fb45e38fa4
commit 9915088cbc
5 changed files with 12 additions and 29 deletions

View File

@ -9,6 +9,7 @@ const RuntimeGlobals = require("./RuntimeGlobals");
const Template = require("./Template"); const Template = require("./Template");
const propertyAccess = require("./util/propertyAccess"); const propertyAccess = require("./util/propertyAccess");
/** @typedef {import("../declarations/WebpackOptions").OutputOptions} OutputOptions */
/** @typedef {import("./AsyncDependenciesBlock")} AsyncDependenciesBlock */ /** @typedef {import("./AsyncDependenciesBlock")} AsyncDependenciesBlock */
/** @typedef {import("./ChunkGraph")} ChunkGraph */ /** @typedef {import("./ChunkGraph")} ChunkGraph */
/** @typedef {import("./Module")} Module */ /** @typedef {import("./Module")} Module */
@ -25,7 +26,7 @@ const arrayEquals = (a, b) => {
class RuntimeTemplate { class RuntimeTemplate {
/** /**
* @param {TODO} outputOptions the compilation output options * @param {OutputOptions} outputOptions the compilation output options
* @param {RequestShortener} requestShortener the request shortener * @param {RequestShortener} requestShortener the request shortener
*/ */
constructor(outputOptions, requestShortener) { constructor(outputOptions, requestShortener) {

View File

@ -40,7 +40,7 @@ class AssetJavascriptGenerator extends Generator {
* @returns {Source} generated code * @returns {Source} generated code
*/ */
generate(module, { chunkGraph, runtimeTemplate, runtimeRequirements }) { generate(module, { chunkGraph, runtimeTemplate, runtimeRequirements }) {
const filename = module.resource; const filename = module.nameForCondition();
const { assetModuleFilename } = runtimeTemplate.outputOptions; const { assetModuleFilename } = runtimeTemplate.outputOptions;
const url = this.mainTemplate.getAssetPath(assetModuleFilename, { const url = this.mainTemplate.getAssetPath(assetModuleFilename, {
module, module,
@ -67,12 +67,9 @@ class AssetJavascriptGenerator extends Generator {
* @returns {number} estimate size of the module * @returns {number} estimate size of the module
*/ */
getSize(module, type) { getSize(module, type) {
const originalSource = module._cachedSources.get("javascript").source; // it's only estimated so this number is probably fine
// Example: m.exports=r.p+"0123456789012345678901.ext"
if (!originalSource) { return 42;
return 0;
}
return originalSource.size();
} }
} }

View File

@ -6,7 +6,6 @@
"use strict"; "use strict";
const Generator = require("../Generator"); const Generator = require("../Generator");
const RuntimeModule = require("../RuntimeModule");
const { compareModulesById } = require("../util/comparators"); const { compareModulesById } = require("../util/comparators");
const AssetGenerator = require("./AssetGenerator"); const AssetGenerator = require("./AssetGenerator");
const AssetJavascriptGenerator = require("./AssetJavascriptGenerator"); const AssetJavascriptGenerator = require("./AssetJavascriptGenerator");
@ -24,11 +23,7 @@ const AssetParser = require("./AssetParser");
const type = "asset"; const type = "asset";
const plugin = "AssetModulesPlugin"; const plugin = "AssetModulesPlugin";
class AssetModulesPlugin extends RuntimeModule { class AssetModulesPlugin {
constructor() {
super("url");
}
/** /**
* @param {Compiler} compiler webpack compiler * @param {Compiler} compiler webpack compiler
* @returns {void} * @returns {void}
@ -51,7 +46,7 @@ class AssetModulesPlugin extends RuntimeModule {
compilation.mainTemplate.hooks.renderManifest.tap( compilation.mainTemplate.hooks.renderManifest.tap(
plugin, plugin,
(result, options) => { (result, options) => {
const { mainTemplate, chunkGraph, moduleGraph } = compilation; const { chunkGraph, moduleGraph } = compilation;
const { const {
chunk, chunk,
moduleTemplates, moduleTemplates,
@ -75,9 +70,7 @@ class AssetModulesPlugin extends RuntimeModule {
chunk, chunk,
chunkGraph, chunkGraph,
moduleGraph, moduleGraph,
mainTemplate,
dependencyTemplates, dependencyTemplates,
outputOptions,
runtimeTemplate runtimeTemplate
}), }),
filenameTemplate, 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 {Module} module the module to render
* @param {ModuleTemplate} moduleTemplate the module template * @param {ModuleTemplate} moduleTemplate the module template
* @param {RenderContextType} renderContext the render context * @param {RenderContext} renderContext the render context
* @returns {Source} the rendered source * @returns {Source} the rendered source
*/ */
/* eslint-enable */ /* eslint-enable */

View File

@ -141,9 +141,9 @@ Built at: 1970-04-20 12:42:42
c9fc77a744ca46b7fe30.jpg 10.9 KiB {179} [emitted] main c9fc77a744ca46b7fe30.jpg 10.9 KiB {179} [emitted] main
Entrypoint main = bundle.js c9fc77a744ca46b7fe30.jpg 2971bea717d1ea440379.png 44af8fe384aadccba06e.svg Entrypoint main = bundle.js c9fc77a744ca46b7fe30.jpg 2971bea717d1ea440379.png 44af8fe384aadccba06e.svg
[10] ./index.js 111 bytes {179} [built] [10] ./index.js 111 bytes {179} [built]
[359] ./images/file.jpg 10.9 KiB (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) 68 bytes (javascript) {179} [built] [440] ./images/file.png 25.9 KiB (asset) 42 bytes (javascript) {179} [built]
[811] ./images/file.svg 656 bytes (asset) 68 bytes (javascript) {179} [built] [811] ./images/file.svg 656 bytes (asset) 42 bytes (javascript) {179} [built]
+ 4 hidden modules" + 4 hidden modules"
`; `;

View File

@ -1,8 +1,5 @@
module.exports = { module.exports = {
mode: "development", mode: "development",
output: {
assetModuleFilename: "images/file[ext]"
},
module: { module: {
rules: [ rules: [
{ {