首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Webpack05-js压缩插件uglify使用

前言 开发环境:development(不需要进行js压缩,不方便调试) 生产环境:production(正式发布上线,需要继续压缩) 一般项目中会有两个webpack配置文件,分别用于不同的环境要求...JS压缩插件uglify 1、安装 在webpack4之前,默认集成该插件,无需安装 在webpack4之后,需要独立安装 npm install uglifyjs-webpack-plugin -...-save-dev 另外,webpack4默认是生产环境,自带js压缩功能 如果要关闭,需要设置mode为development ?...image.png 3、执行webpack js文件大小由之前的24KB,缩小到了7KB,只有原来是三分之一 参考文章 webpack4.0关闭开发环境的代码压缩UglifyJsPlugin https...://blog.csdn.net/zhanglong_web/article/details/79618055 https://jspang.com/posts/2017/09/16/webpack3.

2.3K30
您找到你想要的搜索结果了吗?
是的
没有找到

Tree-Shaking性能优化实践 - 原理篇

通过 tree-shaking,将没有使用的模块摇掉,这样来达到删除无用代码的目的。...三个工具的效果使用各不相同,使用方法可以通过官网文档去了解,三者的效果对比,后文会详细介绍。 二. tree-shaking的原理 Tree-shaking的本质是消除无用的js代码。...其实也不是上面提到的三个工具,rollup,webpack,cc做的,而是著名的代码压缩优化工具uglifyuglify完成了javascript的DCE,下面通过一个实验来验证一下。...右边是webpack打包的结果 可以发现,rollup将无用的代码foo函数unused函数消除了,但是仍然保留了不会执行到的代码,而webpack完整的保留了所有的无用代码不会执行到的代码。...分别用rollup + uglify webpack + uglify 将图4中的代码进行打包 图6 中间是配置文件,右侧是结果 可以看到右侧最终打包结果中都去除了无法执行到的代码,结果符合我们的预期

10710

Webpack体积压缩

前段时间天诚学长(21届上岸TX的大佬)交流了一下他在Webpack CSS压缩遇到的坑,一时兴起总结了这篇Webpack体积压缩相关的知识,希望你读完能有所收获!...HTTP压缩 HTTP压缩是一种内置在 服务器 客户端 之间的,以改进传输速度带宽利用率的方式; HTTP压缩的流程什么呢?...Terser是一个JavaScript的解释(Parser)、Mangler(绞肉机)/Compressor(压缩机)的工具集; 早期会使用 uglify-js来压缩、丑化JavaScript代码,但是目前已经不再维护...,并且不支持ES6+的 语法; Terser是从 uglify-es fork 过来的,并且保留它原来的大部分API以及适配 uglify-esuglify-js@3等; 也就是说,Terser可以帮助压缩...:css-minimizer-webpack-plugin; css-minimizer-webpack-plugin是使用cssnano工具来优化、压缩CSS(也可以单独使用); 安装 css-minimizer-webpack-plugin

1.4K30

为什么 webpack4 默认支持 ES6 语法的压缩?

图片 ES6 的箭头函数 同样的,你使用 ES6 的箭头函数也是无法正常的压缩代码的。 ? 图片 细心的你一定会发现如果使用的是 webpack 4,这个场景描述的问题将不再出现。...不难发现 webpack 4 里面使用了 terser-webpack-plugin 插件替代了之前一直使用的 uglifyjs-webpack-plugin 作为它的内置插件。...进一步分析 在探究 terser-webpack-plugin 插件的原理前,我们先系统的回顾一下代码压缩插件的历史: 当 uglifyjs-webpack-plugin 版本小于 v1.0 时,它使用的是...uglify-js 依赖 但是 uglify-js 并不支持 ES6, 因此在 uglify-js 仓库的 harmony 分支 Fork 了一个 uglify-es uglifyjs-webpack-plugin...Fork 出来进行修改的,因此它的代码结构 uglify-js 基本一致,只不过 terser 使用了 ES6 模块的静态分析功能。

1.2K30

Rollup

bundle 文件 rollup-plugin-serve: 类比 webpack-dev-server, 提供静态服务器能力 安装使用 安装 npm i rollup -g 配置 script 命令...()), ], }; rollup vs webpack webpack 的特点 诞生于2012年,目前Javascript社区使用得比较多的构建工具。...开发者可以在你的应用或库中使用ES2015模块,然后高效地将它们打包成一个单一文件用于浏览器Node.js使用。 Rollup最令人激动的地方,就是能让打包文件体积很小。...因为Rollup基于ES2015模块,比WebpackBrowserify使用的CommonJS模块机制更高效。这也让Rollup从模块中删除无用的代码,即tree-shaking变得更容易。...但是 rollup 对于代码的 tree-shaking es6模块有算法优势的支持。 开发应用用 webpack 开发库的时候 rollup

1.7K20

git submodule 添加、使用删除

项目中经常使用别人维护的模块,在git中使用子模块的功能能够大大提高开发效率,本文主要讲解子模块相关的基础命令,详细使用请参考man page。...子模块的更新 子模块的维护者提交了更新后,使用子模块的项目必须手动更新才能包含最新的提交。 在项目中,进入到子模块目录下,执行 git pull更新,查看git log查看相应提交。...完成后返回到项目目录,可以看到子模块有待提交的更新,使用git add,提交即可。 删除子模块 有时子模块的项目维护地址发生了变化,或者需要替换子模块,就需要删除原有的子模块。...删除子模块较复杂,步骤如下: rm -rf 子模块目录 删除子模块目录及源码 vi .gitmodules 删除项目目录下.gitmodules文件中子模块相关条目 vi .git/config...删除配置项中子模块相关条目 rm .git/module/* 删除模块下的子模块目录,每个子模块对应一个目录,注意只删除对应的子模块目录即可 执行完成后,再执行添加子模块命令即可,如果仍然报错

87800

grunt集成Babel 实现ES6转ES5

grunt集成Babel 实现ES6转ES5 背景:原来前端项目使用ES5开发,后来有个小伙伴使用了ES6的高级语言,导致项目无法通过grunt压缩。...需要注意的是,由于原来项目代码是ES5ES6混用的状态,所有有部分代码是不符合ES6的标准的。...Babel将ES6的语法转化成ES5,会给每一个文件加上“use strict”,导致原来部分使用ES5的代码暴露在严格模式下,这在转化或者运行时会报错。 本人在转化运行时就遇到了两个错误。...这个问题在编译时不会报错,但是在严格模式下会导致项目运行不正常,比如下面的c_startc_end。解决办法是给变量加上声明。...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除

58340

Webpack 实现 Tree shaking 的前世今生

一般使用 Babili 替代 uglify 有 Babili 插件式 babel-loader 预设两种方式。...第三阶段:Terser webpack 标记代码 --> Terser 压缩删除无用代码 (webpack5 已内置)terser 是一个用于 ES6+ 的 JavaScript 解析器 mangler...怀抱的人越来越多,其原因也很清楚: uglify 不再进行维护且不支持 ES6+ 语法 webpack 默认内置配置了 terser 插件实现代码压缩关于副作用,从 webpack 4 正式版本扩展了未使用模块检测能力...TerserWebpackPlugin 同 uglify babelMinify 插件一样,terser 插件配置使用也十分简单。.../#PURE/ 注释强制删除一些认为不会产生副作用的代码; 在 Webpack 中还要额外引入一个能够删除未引用代码(dead code)的压缩工具(eg.

1.2K20

从零开始学VUE之Webpack(JS打包压缩插件的使用)

JS打包压缩插件 在项目发布之前,我们必然需要对js等文件进行压缩处理 这里我们就对打包的JS进行压缩 我们使用 一个第三方插件uglifyjs-webpack-plugin,并且版本号指定1.1.1....,cli2保持一致 npm install uglifyjs-webpack-plugin@1.1.1 --save-dev 执行命名安装插件 D:\zhangyugen@jd.com\vue\day1...uglify-es@3.3.9: support for ECMAScript is superseded by `uglify-js` as of v3.13.0 > uglifyjs-webpack-plugin...// index.html打包插件 new HtmlWebpackPlugin({ // 指定模板生成 不然没有id="app"的div 同时删除调用...可以看到JS已经被压缩了,但是存在一个问题,那就是版权声明没有了,还有注释都没有了,应为这就是压缩的一部分,这个版权插件是冲突的 作者:彼岸舞 时间:2021\06\07 内容关于:VUE 本文属于作者原创

1.4K20

vue-cli webpack2项目打包优化

替换代码压缩工具 Webpack 默认提供的 UglifyJS 插件,由于采用单线程压缩,速度慢 ; webpack-parallel-uglify-plugin 插件可以并行运行 UglifyJS 插件...,更加充分而合理的使用 CPU 资源,这可以大大减少的构建时间; 当然,该插件应用于生产环境而非开发环境,安装插件后,进行如下配置: // 删掉webpack提供的UglifyJS插件 // new webpack.optimize.UglifyJsPlugin...,但并没有webpack-parallel-uglify-plugin效果好(可能因项目而异,在大家项目中可以使用对比)。...webpack-parallel-uglify-plugin 插件相对 UglifyJsPlugin 打出的包略大(但是不明显);这里的提速增加的体积相比,我选择了追求速度(使用后我从40秒降到了19...拷贝静态文件 使用copy-webpack-plugin插件:把指定文件夹下的文件复制到指定的目录;其配置如下: var CopyWebpackPlugin = require('copy-webpack-plugin

1.3K40

使用 Riot,ES6 Webpack 构建应用

在 Riot 中使用 ES6 示例的应用采用 ES6 编写,我使用 6to5 转译器将其转换为 ES5 代码,使用 Webpack 将编译后的代码以及需要的库一起打包。...Webpack通过配置可以使用 6to5 loader 将 ES6 源码自动转换成 CommonJS 格式的 ES5 模块,再将其打包至一个单独的 bundle.js 文件。...标签文件需要构建工具(比如 Webpack Browserify)直接使用标签转换器来进行转换。...调试 当用 Webpack 打包时你需要使用开发工具 source-map 配置选项来为你打包后的应用生成 source map 文件。这使得你可以在 ES6 的源码文件中进行调试。...当需要浏览调试源码时,打开浏览器的 Sources 窗口然后定位到webpack:///.文件夹: 在 Firefox 中:打开 Debugger(Ctrl+Shift+S)。

94120

9012教你如何使用gulp4开发项目脚手架

本文将会介绍如何使用gulp4来搭建项目脚手架,如果您还在使用gulp3或更老的版本,您也以通过本文的一些思想将之前的项目进行完善,更新。...该脚手架的设计思路功能如下: 同时为了提高开发环境的效率,这里我们参考webpack的配置,区分开发环境生产环境,在接下来将会具体介绍。...3. gulpfile文件配置 由于我们要区分开发环境生产环境,所以这里我们使用两个不同的配置文件,根据NODE_ENV来区分用哪个文件。...(https://github.com/MrXujiang/gulp4_multi_pages) 最后 该脚手架任然有需要完善的地方,比如如何兼容uglifybabel,md5需要使用两次的情况,如果更好的解决方案...在脚手架选型上,也不一定非要用gulp,webpack,一般的经验是传统型的静态网站适合用gulp,由于不需要编译es6,所以有更小的体积,当然也可以用webpack,本文主要是给大家提供一使用gulp4

1.4K10

你可能不知道的9条Webpack优化策略

webpack 有时候打包很慢,而我们在项目中可能用了很多的 plugin loader,想知道到底是哪个环节慢,下面这个插件可以计算 plugin loader 的耗时。...目前有三种主流的压缩方案: parallel-uglify-plugin uglifyjs-webpack-plugin terser-webpack-plugin parallel-uglify-plugin...当webpack有多个JS文件需要输出压缩时,原来会使用UglifyJS去一个个压缩并且输出,而ParallelUglifyPlugin插件则会开启多个子进程,把对多个文件压缩的工作分给多个子进程去完成...安装 yarn add -D webpack-parallel-uglify-plugin 示例 import ParallelUglifyPlugin from 'webpack-parallel-uglify-plugin...上面说了这么多,主要是为了方便大家对于预编译资源模块DllPlugin 、DllReferencePlugin插件作用的理解(我第一次使用看了好久才明白~~) 先来看下完成的项目目录结构: ?

1.7K31

走近webpack(2)–css打包及压缩js

所有的loaders都需要在npm中单独安装并且在module中配置后才可以使用。loader的主要配置只有testuse两种,简单来说就是。你要匹配的文件是什么,用test来过滤。...下面咱们开始第一个loader的使用。   首先我们来安装两个loader,css-loaderstyle-loader。...uglifyjs-webpack-plugin已经集成在webpack中,所以我们不用下载安装了,直接在config.js中引入: const uglify = require('uglifyjs-webpack-plugin...先把dist目录下的index.html复制到src目录下,然后把dist目录下的文件都删除。   html文件的打包需要用到另一个插件,html–webpack–plugin。...如果稍微细心一点你会发现,其实webpack主要的作用就在于loaderplugin,也正是如此,webpack才有了它多样化个性化的配置方法。

1.7K10
领券