《玩转webpack》 第四章 进阶篇: 编写可维护的 webpack 构建配置
webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略 05 原理篇:通过源码掌握 webpack 打包原理 06 原理篇:编写 Loader 和插件 07 实战篇:React 全家桶 和 webpack 开发商城项目 08 基础篇:webpack 进阶用法 03 构建配置抽离成 npm 包的意义 可维护性 通用性 质量 ·业务开发者无需关注构建配置 ·统一团队构建脚本 ·统一团队构建脚本 ·构建配置合理的拆分 ·README 文档、ChangeLog 文档等 ·冒烟测试、单元测试、测试覆盖率 ·持续集成 构建配置管理的可选方案 将构建配置设计成一个库,比如:hjs-webpack、Neutrino、webpack-blocks 通过多个配置文件管理不同环境的构建,webpack --config 参数进行控制 抽成一个工具进行管理,比如:create-react-app eact-app, kyt, nwb 将所有的配置放在一个文件,通过 --env 参数控制分支选择 构建配置包设计 通过多个配置文件管理不同环境的 webpack 配置 抽离成一个 npm 包统一管理 ·开发环境:webpack.dev.js ·生产环境:webpack.prod.js ·规范:Git commit日志、README、ESLint 规范、Semver 规范 ·质量:冒烟测试、单元测试、测试覆盖率和0 码力 | 30 页 | 5.38 MB | 1 年前3《玩转webpack》第六章 原理篇: 通过源码掌握 webpack 打包原理
基础篇:webpack 与构建发展简史 目 录 CONTENTS 01 基础篇:webpack 基础用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略 05 原理篇:通过源码掌握 webpack 打包原理 06 原理篇:编写 Loader 和插件 07 实战篇:React 全家桶 和 webpack 开发商城项目 08 (webpack-command) 这个 npm 包,并且 执行 CLI webpack-cli 做的事情 引入 yargs,对命令行进行定制 分析命令行参数,对各个参数进行转换,组成编译配置项 引用webpack,根据配置项进行编译和构建 从NON_COMPILATION_CMD分析出不需要编译的命令 const { NON_COMPILATION_ARGS } = require("./utils/constants"); //创建一份 webpack 配置文件 "migrate", //进行 webpack0 码力 | 39 页 | 3.66 MB | 1 年前3《玩转webpack》第五章 进阶篇: webpack 构建速度和体积优化策略
基础篇:webpack 与构建发展简史 目 录 CONTENTS 01 基础篇:webpack 基础用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略 05 原理篇:通过源码掌握 webpack 打包原理 06 原理篇:编写 Loader 和插件 07 实战篇:React 全家桶 和 webpack 开发商城项目 08 node_modules 目的:尽可能的少构建模块 减少文件搜索范围 优化 resolve.mainFields 配置 优化 resolve.modules 配置(减少模块搜索层级) 优化 resolve.extensions 配置 合理使用 alias 图片压缩 使用:配置 image-webpack-loader 要求:基于 Node 库的 imagemin 或者 tinypng API API Imagemin的优点分析 可以引入更多第三方优化插件,例如pngquant 有很多定制选项 可以处理多种图片格式 Imagemin的压缩原理 pngquant: 是一款PNG压缩器,通过将图像转换为具有alpha通道(通常比24/32位PNG 文件小60-80%)的更高效的8位PNG格式,可显著减小文件大小。 pngcrush:其主要目的是通过尝试不同的压缩级别和PNG过滤方法来降低PNG0 码力 | 36 页 | 8.13 MB | 1 年前3Gulp 入门指南
实现 Web 前端自动化开发的工具,利用它能够极大的提高开发效率。 在 Web 前端开发工作中有很多“重复工作”,比如压缩CSS/JS文件。而这些工作都是有规律的。找到这 些规律,并编写 gulp 配置代码,让 gulp 自动执行这些“重复工作”。 将规律转换为 gulp 代码 现有目录结构如下: └── js/ └── a.js 规律 1. 找到 js/目录下的所有 .js 文件 文件,压缩它们,将压缩后的文件存放在 dist/js/ 目录下。 gulp 代码 你可以 下载所有示例代码 或 在线查看代码 建议 建议:你可以只阅读下面的代码与注释或同时阅读代码解释 gulp 的所有配置代码都写在 gulpfile.js 文件。 一、新建一个 一、新建一个 gulpfile.js gulpfile.js 文件 文件 chapter2 └── gulpfile.js 二、在 目录下的所有 css 文件,压缩它们,将压缩后的文件存放在 dist/css/ 目录下。 gulp 代码 你可以 下载所有示例代码 或 在线查看代码 当熟悉 使用 gulp 压缩 JS 的方法后,配置压缩 CSS 的 gulp 代码就变得很轻松。 一、安装 gulp-minify-css 一、安装 gulp-minify-css 模块 提示:你需要使用命令行的 cd 切换到对应目录后进行安装操作。0 码力 | 36 页 | 275.87 KB | 1 年前3《玩转webpack》 第一章 基础篇: webpack 与构建发展简史
webpack 构 建配置,和 webpack 打包优化 详细剖析 webpack 打包原理理 和插件、Loader 的实现 从实际 Web 商城项⽬目出发, 讲解 webpack 实际使⽤用 基础篇:webpack 与构建发展简史 ⽬目 录 CONTENTS 01 基础篇:webpack 基础⽤用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 816,228 为什什么选择 webpack? 社区⽣生态丰富 配置灵活和插件化扩展 官⽅方更更新迭代速度快 初识 webpack:配置⽂文件名称 可以通过 webpack --config 指定配置⽂文件 webpack 默认配置⽂文件:webpack.config.js 初识 webpack:webpack 配置组成 module.exports = { entry: './src/index new HtmlwebpackPlugin({ template: './src/index.html’ }) ] }; 打包的⼊入⼝口⽂文件 打包的输出 环境 Loader 配置 插件配置 ·································· ································· ·····································0 码力 | 17 页 | 690.93 KB | 1 年前3《玩转webpack》 第二章 基础篇: webpack 基础用法
《玩转 webpack》 基础篇:webpack 与构建发展简史 ⽬目 录 CONTENTS 01 基础篇:webpack 基础⽤用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略略 05 原理理篇:通过源码掌握 webpack 打包原理理 06 原理理篇:编写 Loader 和插件 07 实战篇:React 全家桶 如何将编译后的⽂文件输出到磁盘 Output 的⽤用法:单⼊入⼝口配置 module.exports = { entry: './path/to/my/entry/file.js' output: { filename: 'bundle.js’, path: __dirname + '/dist' } }; Output 的⽤用法:多⼊入⼝口配置 module.exports = { entry: { babel-loader babel的配置⽂文件是:.babelrc 资源解析:增加ES6的babel preset配置 { "presets": [ + "@babel/preset-env” ], "plugins": [ "@babel/proposal-class-properties" ] } 增加 ES6 的 babel preset 配置 资源解析:解析 React0 码力 | 41 页 | 2.52 MB | 1 年前3Rspack 基于 Rust 的高性能Web 构建工具
巨型项目中 Build 时间 10-20 分钟,甚至更久,拖慢 CI/CD 效率 Rspack 解决了什么问题? ??? 灵活丰富的配置 不止覆盖 Web 开发场景,能够应对各种场景 Rspack 解决了什么问题? ??? 强大的生产环境优化 强大可自定义配置的拆包能力等决定了产物的性能 Rspack 解决了什么问题? ??? ♂️ 方便从原有方案(Webpack)迁移 用最小的成本优化巨型项目的开发体验 hmr 18s 1.4s 13 倍 Rspack 有哪些特性? ??? 与 Webpack 部分兼容 The subset of Webpack! Rspack 有哪些特性? ⚙️ 常用配置兼容 Rspack 有哪些特性? ??? 常用 Loader 兼容 • babel-loader • style-loader • css-loader • postcss-loader 平滑! 得益于与 Webpack 良好的兼容性! 如何从 Webpack 迁移到 Rspack? ✅ 宽松模式 • 目前并不支持所有 webpack 配置,且有些配置会影响产物,为了保 证产物的正确性,Rspack 默认开启了对配置的严格校验 如何从 Webpack 迁移到 Rspack? ??? Rust is faster than JavaScript • 优先使用内置功能0 码力 | 29 页 | 4.51 MB | 1 年前3《玩转webpack》 第三章 基础篇 Webpack 进阶用法
基础篇:webpack 与构建发展简史 ⽬目 录 CONTENTS 01 基础篇:webpack 基础⽤用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略略 05 原理理篇:通过源码掌握 webpack 打包原理理 06 原理理篇:编写 Loader 和插件 07 实战篇:React 全家桶 和 webpack 开发商城项⽬目 exports = { entry: { index: './src/index.js', search: './src/search.js ‘ } }; 缺点:每次新增或删除⻚页⾯面需要改 webpack 配置 每个⻚页⾯面对应⼀一个 entry,⼀一个 html-webpack-plugin 多⻚页⾯面打包通⽤用⽅方案 动态获取 entry 和设置 html-webpack-plugin 数量量 mport"], ... } 代码分割的效果 ESLint 的必要性 2017年年4⽉月13⽇日,腾讯⾼高级⼯工程师⼩小明在做充值业务时,修改了了苹果 iap ⽀支付配 置,将 JSON 配置增加了了重复的 key 。代码发布后,有⼩小部分使⽤用了了 vivo ⼿手 机的⽤用户反馈充值⻚页⾯面⽩白屏,⽆无法在 Now app 内进⾏行行充值。最后问题定位是: vivo ⼿手机使⽤用了了系统⾃自带的0 码力 | 69 页 | 4.33 MB | 1 年前3《玩转webpack》第八章 实战篇: React 全家桶 和 webpack 开发商城项巨
基础篇:webpack 与构建发展简史 ⽬目 录 CONTENTS 01 基础篇:webpack 基础⽤用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略略 05 原理理篇:通过源码掌握 webpack 打包原理理 06 原理理篇:编写 Loader 和插件 07 实战篇:React 全家桶 和 webpack 开发商城项⽬目 开发⽅方式,数据库基于 Sequelize · Rest API ⻛风格 ·采⽤用 JWT 进⾏行行鉴权 ·组件化,组件颗粒度尽可能⼩小 ·直接复⽤用 builder-webpack-geektime 的构建配置,⽆无需关注构建脚本 源码和演示地址 · 源码: https://github.com/cpselvis/geektime-webpack-course · 演示步骤: README 有详细步骤0 码力 | 25 页 | 5.67 MB | 1 年前3《玩转webpack》第七章 原理篇: 编写 Loader 和插件
基础篇:webpack 与构建发展简史 目 录 CONTENTS 01 基础篇:webpack 基础用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略 05 原理篇:通过源码掌握 webpack 打包原理 06 原理篇:编写 Loader 和插件 07 实战篇:React 全家桶 和 webpack 开发商城项目 08 filename: "[name].js", }, plugins: [new DemoPlugin()], }; 开发一个最简单的插件 src/demo-plugin.js 加入到 webpack 配置中 module.exports = class DemoPlugin { constructor(options) { this.options = options; } apply()0 码力 | 29 页 | 4.37 MB | 1 年前3
共 10 条
- 1