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 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) {

View File

@ -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;
}
}

View File

@ -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 */

View File

@ -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"
`;

View File

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