search
HomeWeb Front-endCSS TutorialEnforcing performance budgets with webpack

Enforcing performance budgets with webpack

Modern web applications no longer rely on a single huge JavaScript package. Research shows that larger packages increase memory usage and CPU load, especially on low- and mid-end mobile devices. Webpack provides multiple features to reduce package size and control resource loading priorities, the most important of which are code segmentation and performance hints. Code segmentation divides the code into multiple packages, loading on demand or in parallel; performance tips detect whether the package size exceeds the specified threshold when building, in order to optimize or delete unnecessary code.

Webpack By default, warnings are issued when the resource size or entry point exceeds 250KB (244KiB), but you can configure how and size thresholds of performance prompts are displayed via performance object in the webpack.config.js file. This article will describe how to use this feature as the first line of defense to prevent performance degradation.

Customize your budget

The default resource and entry point size thresholds may not always match your needs, but can be configured. For example, a small blog may have a budget of 50KB (48.8KiB) each of the resources and entry points. The relevant settings in webpack.config.js are as follows:

 module.exports = {
  performance: {
    maxAssetSize: 50000,
    maxEntrypointSize: 50000,
  }
};

maxAssetSize and maxEntrypointSize properties control the threshold size (in bytes) of the resource and entry point, respectively. maxEntrypointSize ensures that packages created from files listed in entry object (usually JavaScript or Sass files) do not exceed the specified threshold; maxAssetSize enforces the same restrictions on other resources generated by Webpack (such as images, fonts, etc.).

An error appears when the threshold is exceeded

Webpack issues a warning when the budget threshold is exceeded by default. This is enough for the development environment, but not for the production environment. You can trigger an error by adding hints property to the performance object and setting it to 'error' :

 module.exports = {
  performance: {
    maxAssetSize: 50000,
    maxEntrypointSize: 50000,
    hints: 'error',
  }
};

Other valid values ​​for hints attribute are 'warning' and false . false will completely disable the warning, even if the specified limit is exceeded. It is not recommended to use false in production mode.

Exclude certain resources

Webpack enforces a size threshold for each type of resource it generates. If any resource exceeds the specified limit, an error will be thrown. For example, if Webpack is configured to process images, an error will occur as long as one of the images exceeds the threshold.

assetFilter property can be used to control the files used to calculate performance prompts:

 module.exports = {
  performance: {
    maxAssetSize: 50000,
    maxEntrypointSize: 50000,
    hints: 'error',
    assetFilter: function(assetFilename) {
      return !assetFilename.endsWith('.jpg');
    },
  }
};

This tells Webpack to exclude any files ending in .jpg when running performance prompt calculations. It can use more complex logic to meet the conditions of various environments, file types, and other resources.

limit

One current limitation is that the same budget threshold applies to all resources and entry points. In other words, multiple budgets are not yet set as needed, such as setting different restrictions for JavaScript, CSS, and image files. However, there are already open pull requests that should remove this restriction.

Summarize

It is useful to set up and enforce performance budgets at the beginning of the project. It will remind you to pay attention to the size of your dependencies and encourage you to find lighter alternatives to avoid over budget.

But the performance budget doesn’t stop there! Resource size is just one of many factors that affect performance, so more work is still needed to ensure the best experience is provided. Running Lighthouse tests is a great way to understand other metrics and suggestions for improvement.

The above is the detailed content of Enforcing performance budgets with webpack. For more information, please follow other related articles on the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
@keyframes vs CSS Transitions: What is the difference?@keyframes vs CSS Transitions: What is the difference?May 14, 2025 am 12:01 AM

@keyframesandCSSTransitionsdifferincomplexity:@keyframesallowsfordetailedanimationsequences,whileCSSTransitionshandlesimplestatechanges.UseCSSTransitionsforhovereffectslikebuttoncolorchanges,and@keyframesforintricateanimationslikerotatingspinners.

Using Pages CMS for Static Site Content ManagementUsing Pages CMS for Static Site Content ManagementMay 13, 2025 am 09:24 AM

I know, I know: there are a ton of content management system options available, and while I've tested several, none have really been the one, y'know? Weird pricing models, difficult customization, some even end up becoming a whole &

The Ultimate Guide to Linking CSS Files in HTMLThe Ultimate Guide to Linking CSS Files in HTMLMay 13, 2025 am 12:02 AM

Linking CSS files to HTML can be achieved by using elements in part of HTML. 1) Use tags to link local CSS files. 2) Multiple CSS files can be implemented by adding multiple tags. 3) External CSS files use absolute URL links, such as. 4) Ensure the correct use of file paths and CSS file loading order, and optimize performance can use CSS preprocessor to merge files.

CSS Flexbox vs Grid: a comprehensive reviewCSS Flexbox vs Grid: a comprehensive reviewMay 12, 2025 am 12:01 AM

Choosing Flexbox or Grid depends on the layout requirements: 1) Flexbox is suitable for one-dimensional layouts, such as navigation bar; 2) Grid is suitable for two-dimensional layouts, such as magazine layouts. The two can be used in the project to improve the layout effect.

How to Include CSS Files: Methods and Best PracticesHow to Include CSS Files: Methods and Best PracticesMay 11, 2025 am 12:02 AM

The best way to include CSS files is to use tags to introduce external CSS files in the HTML part. 1. Use tags to introduce external CSS files, such as. 2. For small adjustments, inline CSS can be used, but should be used with caution. 3. Large projects can use CSS preprocessors such as Sass or Less to import other CSS files through @import. 4. For performance, CSS files should be merged and CDN should be used, and compressed using tools such as CSSNano.

Flexbox vs Grid: should I learn them both?Flexbox vs Grid: should I learn them both?May 10, 2025 am 12:01 AM

Yes,youshouldlearnbothFlexboxandGrid.1)Flexboxisidealforone-dimensional,flexiblelayoutslikenavigationmenus.2)Gridexcelsintwo-dimensional,complexdesignssuchasmagazinelayouts.3)Combiningbothenhanceslayoutflexibilityandresponsiveness,allowingforstructur

Orbital Mechanics (or How I Optimized a CSS Keyframes Animation)Orbital Mechanics (or How I Optimized a CSS Keyframes Animation)May 09, 2025 am 09:57 AM

What does it look like to refactor your own code? John Rhea picks apart an old CSS animation he wrote and walks through the thought process of optimizing it.

CSS Animations: Is it hard to create them?CSS Animations: Is it hard to create them?May 09, 2025 am 12:03 AM

CSSanimationsarenotinherentlyhardbutrequirepracticeandunderstandingofCSSpropertiesandtimingfunctions.1)Startwithsimpleanimationslikescalingabuttononhoverusingkeyframes.2)Useeasingfunctionslikecubic-bezierfornaturaleffects,suchasabounceanimation.3)For

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.