Filterizr 构建流程全解:Webpack 如何产出 3 种分发版本 📅 发布时间:2026/8/21 18:32:18 👁 浏览次数: Filterizr 构建流程全解Webpack 如何产出 3 种分发版本【免费下载链接】filterizr:sparkles: Filterizr is a JavaScript library that sorts, shuffles and filters responsive galleries using CSS3 transitions :sparkles:项目地址: https://gitcode.com/gh_mirrors/fi/filterizrFilterizr 是一款基于 CSS3 过渡动画的轻量级 JavaScript 库用于对响应式图片画廊进行排序、随机洗牌和分类筛选同时还能作为 jQuery 插件使用。本文将带你彻底看懂 Filterizr 的构建流程为什么一次 Webpack 打包会产出 3 种分发版本、它们之间有什么区别、以及如何用一条命令完成全部构建。即使你是刚接触前端打包的新手也能照着这份构建流程教程快速上手。Filterizr 是什么一图看懂它的核心能力Filterizr 的典型应用场景是图片筛选画廊一组图片按data-category打上分类标签点击按钮即可用平滑的 CSS3 动画完成筛选、排序和搜索。官方 Demodemo/index.html里就用城市、自然、工业三组图片演示了这套效果Filterizr 完全使用 TypeScript 编写源码结构清晰核心类位于 src/Filterizr/Filterizr.ts负责初始化画廊、监听事件、调度筛选逻辑。整个项目没有多余依赖浏览器兼容 IE11 及所有现代浏览器。一次构建为何产出 3 种分发版本打开构建产物目录dist/你会发现三个文件分别对应三种不同的使用方式产物文件用途使用场景filterizr.min.jsUMD 模块支持 CommonJS / ES6 import通过 npm 安装后import Filterizr from filterizrvanilla.filterizr.min.js暴露全局变量Filterizr直接用script标签引入jquery.filterizr.min.jsjQuery 插件版自动扩展$.fn.filterizr配合 jQuery 使用这三种版本不是手写的三份代码而是同一份 TypeScript 源码经过 Webpack 多入口打包得出的结果这正是 Filterizr 构建流程的精妙之处。构建流程核心Webpack 多入口配置解析一切秘密都在根目录的 webpack.config.js 中。这份配置通过命令行传入的env参数动态决定打包行为--env.envproduction开启生产模式代码压缩、去除 source map--env.buildTargetvar切换为全局变量分发目标产出可被script直接引用的文件。配置中有两个关键开关library暴露的全局变量名生产 UMD 模式下为空和libraryTargetumd或var。当构建 var 版本时library被设为Filterizr同时入口切换为两个src/index.ts导出 Filterizr 主类产出vanilla.filterizr.min.jssrc/index.jquery.ts检测全局jQuery并调用插件安装逻辑产出jquery.filterizr.min.js。jQuery 插件的安装逻辑位于 src/Filterizr/installAsJQueryPlugin.ts它把filterizr方法挂到$.fn原型上让你能写出$(.filtr-container).filterizr(filter, 5)这样的链式调用。最快构建方法一行命令打包全部版本在 package.json 的scripts中构建命令被精心编排过build: webpack -p --env.envproduction webpack -p --env.envproduction --env.buildTargetvar这条命令等价于依次执行两次 Webpack 打包第一次不带buildTarget产出 UMD 版filterizr.min.jsnpm 主入口对应package.json中的main: dist/filterizr.min.js第二次带--env.buildTargetvar一次性产出vanilla.filterizr.min.js与jquery.filterizr.min.js。如果你想单独构建某一类版本还可以拆分使用npm run build-commonjs只构建 UMD 版npm run build-var只构建全局变量版。本地开发Webpack Dev Server 实时预览调试 Filterizr 时无需每次手动构建。配置里内置了开发模式--env.envdevelopment此时devServer会以demo/目录为根目录启动支持热更新HMR改动源码后浏览器即时刷新npm start开发模式下 Webpack 使用inline-source-map内联源码映射方便在浏览器 DevTools 中直接断点调试 TypeScript 源码这对理解 Filterizr 的内部实现非常有帮助。TypeScript 类型声明如何一并产出除了 JS 产物Filterizr 还为 TypeScript 使用者提供了类型声明。查看 tsconfig.json 可以看到declaration: true与outDir: ./dist/配合package.json中的types: dist/index.d.ts让 npm 用户获得完整的智能提示——这也是 Filterizr 构建流程中容易被忽略但很贴心的一环。构建流程常见问题排查产物里没有jquery.filterizr.min.js检查是否用了build-commonjs该命令只产出 UMD 版需执行npm run build或build-var。jQuery 插件报错 requires jQuery to work使用插件版时必须先引入 jQuery再引入jquery.filterizr.min.js因为插件安装函数依赖全局jQuery对象见 src/index.jquery.ts。想改默认配置所有选项集中管理在 src/FilterizrOptions/defaultOptions.ts构建后自动生效。总结Filterizr 的构建流程用一套源码 两套 Webpack 配置分支就优雅地解决了多场景分发问题npm 用户拿 UMD 版传统网页用全局变量版jQuery 项目用插件版。理解了 webpack.config.js 中env参数的妙用你不仅能玩转 Filterizr还能把这套多目标打包思路迁移到自己的项目里。赶快 clone 下来跑一次npm run build亲自看看 3 种分发版本的诞生过程吧【免费下载链接】filterizr:sparkles: Filterizr is a JavaScript library that sorts, shuffles and filters responsive galleries using CSS3 transitions :sparkles:项目地址: https://gitcode.com/gh_mirrors/fi/filterizr创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考