


Detailed explanation of 3 JS compression plug-ins commonly used in webpack
This article will give you a detailed introduction to three commonly used JS compression plug-ins in webpack. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to everyone.
Here are three types of JS packaging plug-ins:
(1) UglifyJS
Support: babel present2015
, webpack3
Disadvantages:
It uses a single-threaded compression code, that is Say multiple js files need to be compressed, it needs to be compressed one by one. Therefore, packaging and compressing code in a formal environment is very slow (because compressing JS code requires first parsing the code into an AST syntax tree represented by Object abstraction, and then applying various rules to analyze and process the AST, making this process very time-consuming) .
Advantages: Old project support (compatible with IOS10)
Usage:
npm i uglifyjs-webpack- plugin
module.exports = { plugins: [ new webpack.optimize.UglifyJsPlugin({ sourceMap: true, compress: { warnings: false } }), ] }
[Recommended learning: javascript advanced tutorial】
(2) webpack-parallel-uglify-plugin
Support: babel7
, webpack4
##Disadvantages: Not supported by old projects (not compatible with IOS10)
Advantages:
The ParallelUglifyPlugin plug-in will open multiple sub-processes and assign the compression work of multiple files to multiple sub-processes to complete, but each sub-process will still pass UglifyJS decompresses code. It's nothing more than parallel processing that needs to be compressed. Processing multiple subtasks in parallel will increase efficiency even more.Usage:
1、npm i -D webpack-parallel-uglify-plugin
webpack.config.jsFile
// 引入 ParallelUglifyPlugin 插件 const ParallelUglifyPlugin = require('webpack-parallel-uglify-plugin'); module.exports = { plugins: [ // 使用 ParallelUglifyPlugin 并行压缩输出JS代码 new ParallelUglifyPlugin({ // 传递给 UglifyJS的参数如下: uglifyJS: { output: { /* 是否输出可读性较强的代码,即会保留空格和制表符,默认为输出,为了达到更好的压缩效果, 可以设置为false */ beautify: false, /* 是否保留代码中的注释,默认为保留,为了达到更好的压缩效果,可以设置为false */ comments: false }, compress: { /* 是否在UglifyJS删除没有用到的代码时输出警告信息,默认为输出,可以设置为false关闭这些作用 不大的警告 */ warnings: false, /* 是否删除代码中所有的console语句,默认为不删除,开启后,会删除所有的console语句 */ drop_console: true, /* 是否内嵌虽然已经定义了,但是只用到一次的变量,比如将 var x = 1; y = x, 转换成 y = 5, 默认为不 转换,为了达到更好的压缩效果,可以设置为false */ collapse_vars: true, /* 是否提取出现了多次但是没有定义成变量去引用的静态值,比如将 x = 'xxx'; y = 'xxx' 转换成 var a = 'xxxx'; x = a; y = a; 默认为不转换,为了达到更好的压缩效果,可以设置为false */ reduce_vars: true } } }), ] }
- test: Use regular rules to match which files need to be compressed by ParallelUglifyPlugin. The default is /.js$ /.
- include: Use regular expressions to include files compressed by ParallelUglifyPlugin, the default is [].
- exclude: Use regular expressions to exclude files Files compressed by ParallelUglifyPlugin, the default is [].
- cacheDir: caches the compressed results. The next time the same input is encountered, the compressed results are directly obtained from the cache and returned. , cacheDir
- # is used to configure the directory path where the cache is stored. It will not be cached by default. If you want to enable caching, please set a directory path.
- workerCount: Start several child processes to perform compression concurrently. The default is the number of CPU cores of the currently running computer minus 1.
- sourceMap: Whether to generate the corresponding Source Map for the compressed code. It is not generated by default. When turned on, the time consumption will be greatly increased. Generally, the compressed code will not be
- sourceMap sent to the website user's browser.
- uglifyJS: used for configuration when compressing ES5 code, Object type, directly transparently passed to UglifyJS parameters.
- uglifyES: used for configuration when compressing ES6 code, Object type, directly transparently passed to the parameters of UglifyES.
new ParallelUglifyPlugin({ uglifyJS: {}, test: /.js$/g, include: [], exclude: [], cacheDir: '', workerCount: '', sourceMap: false });
(3) terser-webpack-plugin
Support: babel7,
webpack4
Not supported by old projects (not compatible with IOS10)
Advantages:- Like ParallelUglifyPlugin, multiple subtasks are processed in parallel, and the efficiency will be further improved.
- webpack4 is officially recommended and maintained by someone.
The above is the detailed content of Detailed explanation of 3 JS compression plug-ins commonly used in webpack. For more information, please follow other related articles on the PHP Chinese website!npm install terser-webpack-plugin --save-dev
optimization: {
minimize: true,
minimizer: [
new TerserPlugin({
terserOptions: {
ecma: 5,
warnings: false,
parse: {},
compress: {},
mangle: true, // Note `mangle.properties` is `false` by default.
module: false,
output: null,
toplevel: false,
nameCache: null,
ie8: false,
keep_fnames: false,
safari10: true
}
})
]
}
For more programming-related knowledge, please visit:

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

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

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Vue is an excellent JavaScript framework that can help us quickly build interactive and efficient web applications. Vue3 is the latest version of Vue, which introduces many new features and functionality. Webpack is currently one of the most popular JavaScript module packagers and build tools, which can help us manage various resources in our projects. This article will introduce how to use Webpack to package and build Vue3 applications. 1. Install Webpack

Differences: 1. The startup speed of the webpack server is slower than that of Vite; because Vite does not require packaging when starting, there is no need to analyze module dependencies and compile, so the startup speed is very fast. 2. Vite hot update is faster than webpack; in terms of HRM of Vite, when the content of a certain module changes, just let the browser re-request the module. 3. Vite uses esbuild to pre-build dependencies, while webpack is based on node. 4. The ecology of Vite is not as good as webpack, and the loaders and plug-ins are not rich enough.

With the continuous development of web development technology, front-end and back-end separation and modular development have become a widespread trend. PHP is a commonly used back-end language. When doing modular development, we need to use some tools to manage and package modules. Webpack is a very easy-to-use modular packaging tool. This article will introduce how to use PHP and webpack for modular development. 1. What is modular development? Modular development refers to decomposing a program into different independent modules. Each module has its own function.

Configuration method: 1. Use the import method to put the ES6 code into the packaged js code file; 2. Use the npm tool to install the babel-loader tool, the syntax is "npm install -D babel-loader @babel/core @babel/preset- env"; 3. Create the configuration file ".babelrc" of the babel tool and set the transcoding rules; 4. Configure the packaging rules in the webpack.config.js file.

As the complexity of modern web applications continues to increase, building excellent front-end engineering and plug-in systems has become increasingly important. With the popularity of Spring Boot and Webpack, they have become a perfect combination for building front-end projects and plug-in systems. SpringBoot is a Java framework that creates Java applications with minimal configuration requirements. It provides many useful features, such as automatic configuration, so that developers can build and deploy web applications faster and easier. W

In vue, webpack can package js, css, pictures, json and other files into appropriate formats for browser use; in webpack, js, css, pictures, json and other file types can be used as modules. Various module resources in webpack can be packaged and merged into one or more packages, and during the packaging process, the resources can be processed, such as compressing images, converting scss to css, converting ES6 syntax to ES5, etc., which can be recognized by HTML. file type.

Webpack is a module packaging tool. It creates modules for different dependencies and packages them all into manageable output files. This is especially useful for single-page applications (the de facto standard for web applications today).

How does Webpack implement packaging? The following article will give you an in-depth understanding of Webpack packaging principles. I hope it will be helpful to you!
