网站首页 > 技术文章 正文
前言
前端现在开发某个常见功能,直接会在 npm 找到合适的包,这些包存在于 node_modules 目录下。
如何减少包体积,用下 CDN 加速,或者这个模块只有 script 标签导入方式时,直接从 node_modules 拷贝文件到项目 public 资源目录中是常见的懒操作,久而久之,那个目录文件会非常多,尤其当这个项目成为“历史项目”后,那堆文件会变得让后人难以维护。
下面将介绍 2 个小技巧,如何使用 webpack 的 copy-webpack-plugin 和 script-loader 来优化 node_modules 文件和项目依赖关系,来降低日后的维护成本。
copy-webpack-plugin
这是个简单的文件复制工具插件,用于把某文件从 A 目录 copy 到 B 目录。
原先我们手工拷贝流程如下:
- 在资源文件夹(dist/public)新建 libs/js/jquery 目录
- 把 node_modules 下的 jquery 相关依赖复制到上述目录中
似乎没什么问题,一两个文件影响不了项目可读性,但对于一个老项目来说乱七八糟的 js 依赖,以及完全脱离工程化的构建方式是极具风险的,万一哪天谁删资源跑路,都是隐患。
我不会告诉你,我在 pdfjs-dist 中引入 cmaps 文件夹提交了多少文件,强迫症表示接受不了。
对于 copy-webpack-plugin 使用也非常简单,毕竟现在 webpack 都到 5 了:
这样,项目目录就变得清爽多了,也不用了继续维护相关的资源文件内容了,每次打包构建都交给 webpack 帮我们从 node_modules 找到资源文件。
并且,根据需要可以详细设置目标文件的路径,使项目以后可以灵活调整,减少维护成本。
哦对了,如果你还在用 webpack4 ,此插件不要使用 7 和 8 两个版本。
script-loader
上面使用 copy-webpack-plugin 插件只是变相的对项目进行工程化管理,实际输出到资源目录的文件还是一样;但下面说的 script-loader 将减少实际资源目录物理文件数量,从而使项目文件量“瘦身”。
以通过 webpack 的 externals 引入 jquery 模块举例:
像上述用法会在 html 中额外添加 script 以加载 jquery 文件,同时对应的资源文件目录也会有这个 jquery.js 文件存在,但有时我们希望减少这样的物理文件的存在,更希望把 node_modules 中的依赖集中打包到项目 bundle.js 中。
webpack 的 loader 提供 Inline 方式,使之我们不用再 module 中编写对应的规则:
这样,我们减少了物理文件数,同时使某些插件功能更集中在业务代码中,减少某些外界变化导致依赖功能的不可用。
最后
上面两个方法都很常见,我最近在看 pdfjs-dist 模块的 Demo 时看到了这样的使用便拿来和大家分享。
有时候我们追求不是技术的高深和多样,能用最简单的技术方案在某个场景解决问题才是有经验开发者应该具备的能力。
- 上一篇: PICC置管时为防导管异位,我们这样做
- 下一篇: 前端开发中,对图片的优化技巧有哪些?
猜你喜欢
- 2025-01-10 2023年最火的300个JS会议/演讲清单(国外)
- 2025-01-10 PS通道抠图技巧:如何快速抠出风景中的大树?
- 2025-01-10 互联网大佬发布《UI组件库二次封装技巧》,在GitHub引起热议
- 2025-01-10 倒车时,新手司机如何判断,车身与车位前端垂直距离大于1.5米?
- 2025-01-10 aardio + AI 大模型自动编写 Python 代码、网页前端代码的经验与技巧
- 2025-01-10 前端开发中,对图片的优化技巧有哪些?
- 2025-01-10 前端开发者都应知道的 jQuery 小技巧
- 2025-01-10 PICC置管时为防导管异位,我们这样做
- 2025-01-10 「电商设计」C4D产品建模,新手必看小技巧
- 2025-01-10 前端小技巧:利用Blob对象切片上传大文件
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端md5加密 (49)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- 前端接口 (46)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle约束 (46)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- mac oracle (47)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)