Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Optimized Webpack Bundling for Everyone. Intro⤵️

License

NotificationsYou must be signed in to change notification settings

developit/optimize-plugin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Optimize your code for modern browsers while still supporting the other 10%,increasing your build performance, reducing bundle size and improving output quality.

Put simply: it compiles code faster, better and smaller.

Features

  • Much faster than your current Webpack setup
  • Transparently optimizes all of your code
  • Automatically optimizes all of your dependencies
  • Compiles bundles for modern browsers (90%) and legacy browsers (10%)
  • Removes unnecessary polyfills, even when inlined into dependencies
  • Builds a highly-optimized automated polyfills bundle

Install

npm install --save-dev optimize-plugin

Usage

First, disable any existing configuration you have to Babel, minification, and module/nomodule.

Then, addOptimizePlugin to your Webpack plugins Array:

plugins:[newOptimizePlugin({// any options here})]

Options

OptionTypeDescription
concurrencynumber|falseMaximum number of threads to use. Default: the number of available CPUs.
Passfalse for single-threaded, sometimes faster for small projects.
sourceMapboolean|falseWhether or not to produce source maps for the given input.
minifyboolean|falseMinify using Terser, if turned off only comments will be stripped.
downlevelboolean|trueProduces a bundle fornomodule browsers. (IE11, ...)
modernizeboolean|trueAttempt to upgrade ES5 syntax to equivalent modern syntax.
verboseboolean|falseWill log performance information and information about polyfills.
polyfillsFilenamestring|polyfills.legacy.jsThe name for the chunk containing polyfills for the legacy bundle.
excludeRegExp[]|[]Asset patterns that should be excluded

How does this work?

Instead of running Babel on each individual source code file in your project,optimize-plugintransforms your entire application's bundled code. This means it can apply optimizations andtransformations not only to your source, but to your dependencies - making polyfill extractionand reverse transpilation steps far more effective.

This setup also allowsoptimize-plugin to achieve better performance. All work is done ina background thread pool, and the same AST is re-used for modern and legacy transformations.Previous solutions for module/nomodule have generally relied running two complete compilationpasses, which incurs enormous overhead since the entire graph is built and traversed multipletimes. Withoptimize-plugin, bundling and transpilation are now a separate concerns: Webpackhandles graph creation and reduction, then passes its bundles to Babel for transpilation.

FAQ

What do I do with my current Babel configuration?

In order to migrate to optimize-plugin, you'll need to move your babel configuration into a.babelrc orbabel.config.js file and removebabel-loader from your Webpack configuration. Remember, optimize-plugin only uses your babel configuration when generatingmodern bundles. Legacy bundles are automatically compiled to ES5 without looking at your Babel configuration, though you can customize their compilation by defining abrowserslist field in your package.json.

Do I need to include any polyfills manually?

In general, adopting optimize-plugin means removing all of your current polyfills, since the plugin automatically detects and polyfills JavaScript features for legacy bundles. The plugin doesnot polyfill DOM features though, so be sure to keep including any DOM polyfills your application relies (ParentNode.append(), Module Workers, etc).

Remember: the premise of this plugin is that you don't need to configure JS transpilation or polyfills - it's all done automatically based on usage.

License

Apache-2.0


[8]ページ先頭

©2009-2025 Movatter.jp