首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏全栈前端精选

    梳理 6webpack 的性能优化

    结合使用) webpack.prod.conf.js(上线环境使用的webpack,需要与webpack.base.conf.js结合使用) 一.优化构建速度 webpack在启动后,会根据Entry配置的入口 1.1 缩小文件的搜索范围 搜索过程优化方式包括: 1. resolve字段告诉webpack怎么去搜索文件,所以首先要重视resolve字段的配置: 参考文档:https://webpack.docschina.org ,它依赖ES6的import、export的模块化语法,最先在Rollup中出现,Webpack 2.0将其引入。 它正常工作的前提是代码必须采用ES6的模块化语法,因为ES6模块化语法是静态的(在导入、导出语句中的路径必须是静态字符串,且不能放入其他代码块中)。 由于需要分析模块间的依赖关系,所以源码必须是采用了ES6模块化的,否则Webpack会降级处理不采用Scope Hoisting。

    2.2K20发布于 2020-07-24
  • 来自专栏全栈程序员必看

    webpack6webpack处理图片

    图片处理url-loader(webpack5之前的处理方式) 在项目开发中,我们时长会需要使用到图片,比如在img文件夹中有图片test1.png,然后在normal.css中会引用到图片 body{ /img/test1.png"); } 但是此时,我们直接使用webpack打包是会报错的,我们需要安装url-loader,它是用于将文件转换为 base64 URI 的 loader。 接着我们在webpack.config.js中配置url-loader的设置 module.exports = { module: { rules: [ { test 图片字体之类的资源的时候等,需要用到url-loader,file-loader,raw-loader,webpack5则放弃了这三个loader,这三个loader在github上也停止了更新。 webpack5使用四种新增的资源模块(Asset Modules)替代了这些loader的功能。

    1.2K10编辑于 2022-09-19
  • 来自专栏js笔记

    webpack优化

    webpack.config 按照production和dev分开配置, wepback.base.config.js npm install webpack-merge -D const path /dist"), filename: "[name]-[hash:6].js", }, module: { rules: [ { test: /\.(png|jpe? //webpack内置插件 const { HotModuleReplacementPlugin } = require("webpack"); const htmlWebpackPlugin = require ("html-webpack-plugin"); const { merge } = require("webpack-merge"); const baseConfig = require(". // 压缩内联css }, }), new MiniCssExtractPlugin({ filename: "css/[name]-[contenthash:6]

    36610编辑于 2022-10-25
  • 来自专栏生如夏花绚烂

    webpack优化

    不去解析文件,提高打包效率 多个用 | 分隔 ... module: { noParse: '/jquery|others/' } ... exclude与include 如我们匹配所有js的过程中,我们webpack plugins:[ new webpack.IgnorePlugin(/\.\/locale/,/moment/), //moment这个库中,如果引用了. 是单线程模型的,所以Webpack 需要处理的事情需要一件一件的做,不能多件事一起做。 我们需要Webpack 能同一时间处理多个任务,发挥多核 CPU 电脑的威力,HappyPack 就能让 Webpack 做到这点,它把任务分解给多个子进程去并发的执行,子进程处理完后再把结果发送给主进程 /b.js'; console.log('other-----') //webpack.config.js let path = require('path') let HappyPack = require

    50120编辑于 2022-09-08
  • 来自专栏lonelydawn的前端猿区

    webpack性能优化

    开发环境优化 HMR 模块热替换 devServer设置hot: true style-loader 已实现 webpack.HotModuleReplacementPlugin source map 建立源码与构建代码之间的映射关系,快速定位错误在源码中的位置 生产环境优化(构建时优化 & 运行时优化) 缓存策略 配置babel-loader时,设置cacheDiretory 为true,开启babel缓存,之后webpack在打包时,只会对修改过的模块重新编译,其他模块读取babel缓存中的即可 配合静态资源缓存策略,webpack要在输出文件名称上加hash Tree Shaking webpack在打包时,会自动去掉引用了但未使用的模块 sideEffects,在直接 import 模块名称时, webpack无法判断引入的模块是否有用,因为即使没有导出值,但也可能修改了全局对象 ,所以对这些模块,都不会执行Tree Shaking,我们可以在package.json中配置sideEffects告诉webpack哪些模块是有作用的,而其他模块则是无用的 Code Spliting

    50320发布于 2021-09-26
  • 来自专栏零域Blog

    webpack 优化(1)

    webpack 优化 前一段时间一直在写后台管理系统(vue + elementUI + webpack),数下来,虽然不多,也有 3 个了;由于是单页应用,每次到发布的时候,都会耗费大量的时间对代码进行编译压缩 ,所以时不时都会思考着如何才能优化这个过程;谷歌和度娘就像是哆啦 A 梦的奇幻袋,总能给大家带来意想不到的惊喜,当然,这次也不例外。 happypack npm的官方解释比较简单:通过并行转换文件以使 webpack 的构建速度更快;说白了就是利用多线程的优势。 它提供了一个插件和一个加载器,两个并用才能启用 happypack。 include: [ resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server /client') ] } ] } }; 敬请期待下一节 webpack 优化(2) Dllplugin ^_^

    34430编辑于 2022-03-25
  • 来自专栏全栈程序员必看

    webpack打包优化_webpack打包及部署

    由于运行在 Node.js 之上的 Webpack 是单线程模型的,所以Webpack 需要处理的事情需要一件一件的做,不能多件事一起做。 我们需要Webpack 能同一时间处理多个任务,发挥多核 CPU 电脑的威力,HappyPack 就能让 Webpack 做到这点,它把任务分解给多个子进程去并发的执行,子进程处理完后再把结果发送给主进程 HappyPack 对file-loader、url-loader 支持的不友好,所以不建议对该loader使用 安装 HappyPack npm i -D happypack 使用 HappyPack webpack.config.js 对应的参数 id:String 用唯一的标识符 id 来代表当前的 HappyPack 是用来处理一类特定的文件. loaders: Array 用法和 webpack Loader 配置中一样. threads verboseWhenProfiling: Boolean 开启webpack –profile ,仍然希望HappyPack产生输出。 debug: Boolean 启用debug 用于故障排查。

    1.2K20编辑于 2022-11-01
  • 来自专栏全栈程序员必看

    webpack打包优化面试_什么是webpack

    正常实现es6转换es5 基本实现效果查看webpack官网达到实现效果 ---- 一、通过实现减少查找路径来实现优化? //某个路径 配置别名 优化 resolve: { alias: { "@": "", }, 二、通过多线程工作来优化 首先需要引入一包 happypack,在plugins 用法和loader 的配置一样 loaders: [ { loader: "babel-loader", //options es6转换为 css-loader", //兼容 只能在css后 { loader: "postcss-loader", }, // 将 Sass 编译成 CSS "sass-loader", ], }, //解析js 把es6转换为 happypack处理那里类文件 id: "happyBabel", //如何处理 用法和loader 的配置一样 loaders: [ { loader: "babel-loader", //options es6转换为

    1.2K20编辑于 2022-11-03
  • 来自专栏全栈程序员必看

    webpack 多线程_webpack打包原理优化

    安装happypack npm i happypack 改造webpack.config.js,实现多线程打包js let HappyPack = require('happypack');

    56310编辑于 2022-09-27
  • 来自专栏IMWeb前端团队

    优化 Webpack 构建结果

    我们团队中大部分项目也在使用Webpack构建。 庆幸的是Webpack生态圈是如此的丰富,有不少好工具可以利用。 1. 分析打包结果 webpack-bundle-analyzer是一个非常好用的Webpack包分析工具。 我们在production模式的webpack配置下引入插件: const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin Webpack 1.0中可以通过 require.ensure 来实现异步文件的剥离和加载。Webpack2则通过更标准的 import() 来实现同样的功能。 最后的结果如下图,相比优化前已经大幅改善了。 ? 4. 其他性能优化点 将NODE~ENV设置为 production。一般也需要增加 DefinePlugin 设置。 使用DllPlugin。

    75990发布于 2018-01-08
  • 来自专栏前端开发面试指南

    详解webpack构建优化

    webapck构建优化对于大项目是必须要考虑的一件事,下面我们就从速度和体积两方面来探讨构建优化的策略。分析工具在优化之前,我们需要了解一些量化分析的工具,使用它们来帮助我们分析需要优化的点。 /src/main.js', ...})打包后,在命令行的输出信息如下,我们可以看出哪些loader和plugin耗时比较久,然后对其进行优化。 (比如babel-loader转换ES6->ES5、UglifyJsPlugin压缩等等)gzip:parsed后的文件,经过Gzip压缩的大小使用speed-measure-webpack-plugin 图片优化构建速度多进程构建运行在Node.js之上的 Webpack 是单线程的,就算有多个任务同时存在,它们也只能一个一个排队执行。当项目比较复杂时,构建就会比较慢。 /modal/index.js') }}***/treeShaking使用ES6的import/export语法,并且使用下面的方式导入导出你的代码,而不要使用export default。

    1.9K00编辑于 2022-10-10
  • 来自专栏前端开发面试指南

    Webpack构建速度优化

    前言当我们的项目越来越大,webpack的配置项越来越多时,构建速度会越来越慢,所以我们需要通过一些配置来提高webpack的构建速度。 目录缩小范围noParseIgnorePlugin优化 resolve 配置externals缓存缩小范围在配置 loader 的时候,我们需要更精确的去指定 loader 的作用目录或者需要排除的目录 new webpack.IgnorePlugin({ resourceRegExp, contextRegExp });以moment为例,首先找到moment中语言包所在的文件夹,然后在webpack import moment from 'moment'import 'moment/locale/zh-cn'moment.locale('zh-CN')优化 resolve 配置aliasalias js 过程中时间开销比价大,将 babel-loader 的执行结果缓存起来,重新打包的时候,直接读取缓存缓存位置: node_modules/.cache/babel-loader配置//支持转义ES6/

    2K10编辑于 2022-10-18
  • 来自专栏IMWeb前端团队

    优化 Webpack 构建结果

    Webpack应该是当下流行度最广的JavaScript构建、打包工具了。我们团队中大部分项目也在使用Webpack构建。 庆幸的是Webpack生态圈是如此的丰富,有不少好工具可以利用。 1. 分析打包结果 webpack-bundle-analyzer是一个非常好用的Webpack包分析工具。 我们在production模式的webpack配置下引入插件: const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin Webpack 1.0中可以通过 require.ensure 来实现异步文件的剥离和加载。Webpack2则通过更标准的 import() 来实现同样的功能。 最后的结果如下图,相比优化前已经大幅改善了。 ? 4. 其他性能优化点 将NODE~ENV设置为 production。一般也需要增加 DefinePlugin 设置。 使用DllPlugin。

    66930发布于 2019-12-03
  • 来自专栏前端自习课

    Webpack】867- Webpack 优化阻塞的 CSS

    现在有很多优化页面的办法,比如:静态资源的合并和压缩,code splitting,DNS预读取等等 本文介绍的是另一种优化方法:首屏阻塞css优化 原理: 首先我们了解一下页面的基本渲染流程 webkit 那么,为什么要做这种优化呢?上面的流程图就是原因:首先解析html生成dom树,同时解析css生成css树,之后结合两者生成渲染树,然后渲染到屏幕上。 那么,如果我们能优化css,那么就能大大减少页面渲染出来的时间,从而提升pv,增加黏性 怎么做呢: 目前我知道的比较实用的办法是webpack集成critical,critical是一个提取关键css, 那么,我们开门见山,直接从webpack配置开始: const HtmlWebpackPlugin = require('html-webpack-plugin'); // 创建html来服务你的资源 = require('html-critical-webpack-plugin'); // 集成critical的html-webpack-plugin版本 const path = require(

    1.5K20发布于 2021-02-26
  • 来自专栏keyWords

    性能优化篇---Webpack构建速度优化

    webpack-bundle-analyzer webpack-dashboard是一款统计和优化webpack日志的工具,可以以表格形势展示日志信息。 界面:看到构建时间为:Time: 11593ms(作为优化时间对比) webpack配置优化 webpack在启动时会从配置的Entry出发,解析出文件中的导入语句,再递归解析。 对于导入语句Webpack会做出以下操作: 根据导入语句寻找对应的要导入的文件; 在根据要导入的文件后缀,使用配置中的Loader去处理文件(如使用ES6需要使用babel-loader处理) 针对这两点可以优化查找途径 /node_modules'),//排除node_modules目录下的文件 }, 优化resolve.modules配置 resolve.modules用于配置webpack去哪些目录下寻找第三方模块 /webpack.prod.js html中引入dll.js文件 构建时间对比:["11593ms","10654ms","8334ms"] ---- HappyPack并行构建优化 核心原理

    2.5K31发布于 2019-03-20
  • 来自专栏fastmock

    前端性能优化webpack打包优化

    官方自带的优化策略 https://www.webpackjs.com/configuration/optimization/ 这里以react项目为例,列举需要优化的构建项 一、使用代码拆分,让我们的页面代码构建到单独的 上面的分包策略的理解注释中的内容提到了分包的条件和规则,那么,为了尽可能减小我们的主包的大小,我们就要尽可能减少在我们的 entry 选项中指定的入口文件中对其他模块的引用,或者使用异步模块引用的方式,常见的几个优化项目为 优化使用到的工具的引用,将必要的工具引用单独提到一个文件中,避免打包其他没用到的代码到主包 有些应用初始化相关但是跟主应用无关的代码,使用异步模块加载,如下 // app.ts (async () = 针对这种情况,webpack提供了 externals 选项来让我们可以从外部获取这些扩展依赖, 首先,我们需要通过script标签的形式来引入我们需要使用的三方库,有两种方式,一种是手动在 html-webpack-plugin 的html模板文件或者content内容中加入script标签,第二种是使用html-webpack-tags-plugin插件,通过配置的方式往html内容中动态插入script标签,这里推荐后者,

    80120编辑于 2023-12-18
  • 来自专栏Coooooooooode!(前端)

    Webpack 项目打包压缩优化

    webpack学习,使用webpack打包优化,主要注重两点 面向开发者:提示打包速度 面向用户:缩小打包体积 webpack 优化常用 打包速度优化 安装 speed-measure-webpack-plugin plugins: [new MyPlugin(), new MyOtherPlugin()], }); 执行打包命令后,可以看出哪个插件打包耗时比较高,已进行针对优化打包速度 图片 使用thread-loader 进行多线程打包优化 安装thread-loader npm install --save-dev thread-loader 使用时在配置loader时将thread-loader加在比较耗时的loader 除了工具还需要阅读代码,查看使用的插件在项目中的场景,综合考虑解决办法 打包体积优化 安装 webpack-bundle-analyzer 会弹出一个网页来显示项目打包后的体积大小,根据打包提及来优化 style-loader 将css文件注入到index.html中的style标签上 less-loader 处理less代码 sass-loader 处理sass代码 babel-loader 把ES6

    99051编辑于 2023-10-23
  • 来自专栏前端技术分享|前沿资讯|读书分享

    webpack实战——打包优化【下】

    前言 这是webpack打包优化【下】篇。前几篇针对性能要求高的项目从加快打包速度、减小资源体积方面入手,提出了一些优化政策,然后测试都可起到一定优化效果。本篇描述死代码的检测与去除。 在前面我们介绍过,ES6 module 依赖关系的构建是在代码编译时而非运行时。基于这项特性webpack提供了tree shaking功能。 2 ES6 Module tree shaking 只对ES6 Module生效。 小结 通过【上】【中】【下】三篇描述,介绍的一些打包优化的方案均可以对项目有不同程度的优化,无论是打包速度还是减小资源体积,都有涉及。 然而我们更需要清楚地了解到每一种优化策略都有其使用场景,并不是任何一个点放在一切项目中都有效。

    63120发布于 2020-11-06
  • 来自专栏前端迷

    webpack性能优化总结大全

    官方文档中提到: https://www.webpackjs.com/loaders/babel-loader/#babel-loader-%E5%BE%88%E6%85%A2- 02 优化 resolve.modules 05 优化 resolve.extensions 配置 在导入语句没带文件后缀时,Webpack 会自动带上后缀去尝试询问文件是否存在。 02 — 输出质量优化 01 Webpack 实现 CON 的接入 总之,构建需要实现以下几点: 静态资源的导入 URL 需要变成指向 DNS 服务的绝对路径的 URL,而不是相对 HTML 文件的 的 JavaScript 代码必须采用了 ES6 的模块化语法,因为 ES6 模块化语法是静态的,可以进行静态分析。 首先,为了将采用 ES6 模块化的代码提交给 Webpack ,需要配置 Babel 以让其保留 ES6 模块化语句。

    2K20发布于 2019-10-22
  • 来自专栏前端技术分享|前沿资讯|读书分享

    webpack实战——打包优化【上】

    前言 本篇介绍一些webpack优化的配置方法,目的有二: 打包速度更快 输出资源更小 “注意:在软件工程领域有一条十分重要的功能经验,不要过早优化。 在项目初期不要看到一个可以优化的点就去做优化,这样极有可能会增加尤其开发及维护的复杂度,并且从整体效果看,优化效果不会太理想。 1. 将ES6+语法代码转译为ES5等。 1.3 单个loader优化 以babel-loader为例: // 初始webpack.config.js module.exports = { // ... 这样一来,只有在发生变化时编译变化了的文件,对于整体而言也属于一种优化处理。 小结 本篇从多线程打包和缩小打包作用域两个方面入手,对webpack打包层面做出优化

    1.2K30发布于 2020-10-27
领券