《玩转webpack》第七章 原理篇: 编写 Loader 和插件
基础篇:webpack 基础用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略 05 原理篇:通过源码掌握 webpack 打包原理 06 原理篇:编写 Loader 和插件 07 实战篇:React 全家桶 和 webpack 开发商城项目 08 基础篇:webpack 进阶用法 03 一个最简单的 loader 代码结构 module 定义:loader-runner 允许你在不安装 webpack 的情 况下运行 loaders ·作为 webpack 的依赖,webpack 中使用它执行 loader ·进行 loader 的开发和调试 作用: loader-runner 的使用 import { runLoaders } from "loader-runner"; runLoaders({ resource: } apply() { console.log("apply", this.options); } }; 插件的错误处理 通过 compilation 对象的 warnings 和 errors 接收 compilation.warnings.push("warning"); compilation.errors.push("error"); 参数校验阶段可以直接 throw0 码力 | 29 页 | 4.37 MB | 1 年前3《玩转webpack》第五章 进阶篇: webpack 构建速度和体积优化策略
基础篇:webpack 基础用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略 05 原理篇:通过源码掌握 webpack 打包原理 06 原理篇:编写 Loader 和插件 07 实战篇:React 全家桶 和 webpack 开发商城项目 08 基础篇:webpack 进阶用法 03 stats: 构建的统计信息 package n 可以看到每个 loader 和插件执行耗时 代码示例 速度分析插件作用 分析整个打包总耗时 每个插件和loader的耗时情况 webpack-bundle-analyzer 分析体积 代码示例 构建完成后会在 8888 端口展示大小 可以分析哪些问题? 依赖的第三方模块文件大小 业务里面的组件代码大小 使用高版本的 webpack 和 Node.js 构建时间降低了 60%-98%! 60%-98%! 使用 webpack4:优化原因 V8 带来的优化(for of 替代 forEach、Map 和 Set 替代 Object、includes 替代 indexOf) 默认使用更快的 md4 hash 算法 webpacks AST 可以直接从 loader 传递给 AST,减少解析时间 使用字符串方法替代正则表达式 多进程/多实例构建:资源并行解析可选方案 多进程/多实例:使用0 码力 | 36 页 | 8.13 MB | 1 年前3《玩转webpack》第八章 实战篇: React 全家桶 和 webpack 开发商城项巨
基础篇:webpack 基础⽤用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略略 05 原理理篇:通过源码掌握 webpack 打包原理理 06 原理理篇:编写 Loader 和插件 07 实战篇:React 全家桶 和 webpack 开发商城项⽬目 08 基础篇:webpack 进阶⽤用法 03 扫码试看/订阅 《玩转 webpack》视频课程 geektime-builder-webpack npm i geektime-builder-webpack -D 安装依赖 · 安装 @babel/core npm i @babel/core -D · actions 和 reducers src/actions/ 放置所有的actions、src/reducers 放置所有的 reducers · 使⽤用 Provider 传递 store Store 通过 Provider Rest API ⻛风格 ·采⽤用 JWT 进⾏行行鉴权 ·组件化,组件颗粒度尽可能⼩小 ·直接复⽤用 builder-webpack-geektime 的构建配置,⽆无需关注构建脚本 源码和演示地址 · 源码: https://github.com/cpselvis/geektime-webpack-course · 演示步骤: README 有详细步骤 扫码试看/订阅 《玩转0 码力 | 25 页 | 5.67 MB | 1 年前3Gulp 入门指南
压缩图片 3. 编译Sass/LESS 4. 编译CoffeeScript 5. markdown 转换为 html gulp 入门指南 - 2 - 本文档使用 看云 构建 安装 Node 和 gulp gulp 是基于 node 实现的,那么我们就需要先安装 node。 Node 是一个基于Chrome JavaScript V8引擎建立的一个平台,可以利用它实现 Web服务,做类似 fn) 定义默认任务 增加如下代码 gulp.task('default', ['script', 'auto']); 此时你可以在命令行直接输入 gulp +回车,运行 script 和 auto 任务。 最终代码如下: gulp 入门指南 - 9 - 本文档使用 看云 构建 // 获取 gulp var gulp = require('gulp') // 获取 uglify task('default') 定义默认任务 // 在命令行使用 gulp 启动 script 任务和 auto 任务 gulp.task('default', ['script', 'auto']) 去除注释后,你会发现只需要 11 行代码就可以让 gulp 自动监听 js 文件的修改后压缩代码。但是还有还 有一些性能问题和缺少容错性,将在后面的章节详细说明。 gulp 入门指南 - 10 - 本文档使用0 码力 | 36 页 | 275.87 KB | 1 年前3《玩转webpack》第六章 原理篇: 通过源码掌握 webpack 打包原理
基础篇:webpack 基础用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略 05 原理篇:通过源码掌握 webpack 打包原理 06 原理篇:编写 Loader 和插件 07 实战篇:React 全家桶 和 webpack 开发商城项目 08 基础篇:webpack 进阶用法 03 开始:从 webpack 命令行说起 ·开发环境: //4. webpack 可用的 CLI: webpack-cli 和 webpack-command const installedClis = CLIs.filter(cli => cli.installed); npm 包,并且 执行 CLI webpack-cli 做的事情 引入 yargs,对命令行进行定制 分析命令行参数,对各个参数进行转换,组成编译配置项 引用webpack,根据配置项进行编译和构建 从NON_COMPILATION_CMD分析出不需要编译的命令 const { NON_COMPILATION_ARGS } = require("./utils/constants");0 码力 | 39 页 | 3.66 MB | 1 年前3《玩转webpack》 第三章 基础篇 Webpack 进阶用法
基础篇:webpack 基础⽤用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略略 05 原理理篇:通过源码掌握 webpack 打包原理理 06 原理理篇:编写 Loader 和插件 07 实战篇:React 全家桶 和 webpack 开发商城项⽬目 08 基础篇:webpack 进阶⽤用法 03 ������� ����������� 350px) { .header { height: 300px; } } rem 是什什么? W3C 对 rem 的定义: font-size of the root element rem 和 px 的对⽐比: ·rem 是相对单位 ·px 是绝对单位 移动端 CSS px ⾃自动转换成 rem module.exports = { module: { rules: [ { test: 代码层⾯面: 请求层⾯面:减少 HTTP ⽹网络请求数 ·⻚页⾯面框架的初始化脚本 ·上报相关打点 · css 内联避免⻚页⾯面闪动 · ⼩小图⽚片或者字体内联 (url-loader) HTML 和 JS 内联 raw-loader 内联 html raw-loader0 码力 | 69 页 | 4.33 MB | 1 年前3《玩转webpack》 第一章 基础篇: webpack 与构建发展简史
内容综述 基础篇 P1-P3 进阶篇 P4-P5 原理理篇 P6-P7 实战篇 P8 webpack 的基本概念和⽇日常 开发的实⽤用技巧 以⼯工程化的⽅方式组织 webpack 构 建配置,和 webpack 打包优化 详细剖析 webpack 打包原理理 和插件、Loader 的实现 从实际 Web 商城项⽬目出发, 讲解 webpack 实际使⽤用 基础篇:webpack 基础篇:webpack 基础⽤用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略略 05 原理理篇:通过源码掌握 webpack 打包原理理 06 原理理篇:编写 Loader 和插件 07 实战篇:React 全家桶 和 webpack 开发商城项⽬目 08 基础篇:webpack 进阶⽤用法 03 为什什么需要构建⼯工具? 转换 ES6 2013.7 GitHub stars 40766 11796 29427 周下载量量 3,385,392 478,876 816,228 为什什么选择 webpack? 社区⽣生态丰富 配置灵活和插件化扩展 官⽅方更更新迭代速度快 初识 webpack:配置⽂文件名称 可以通过 webpack --config 指定配置⽂文件 webpack 默认配置⽂文件:webpack.config0 码力 | 17 页 | 690.93 KB | 1 年前3《玩转webpack》加餐:webpack5专题
⽬ 录 CONTENTS webpack 5 新特性解析 01 bundle 和 bundless 的差异 02 Vite 的构建原理 03 webpack 5 在 2020-10-10 正式发布 官方 changelog:https://webpack.js.org/blog/2020-10-10-webpack-5-release/ webpack 5 新特性概览 最低支持的 Node ⻓期缓存:确定的模块 Id、chunk 和导出名称 在生产模式下,默认的 chunkIds: “deterministic”, moduleIds: “deterministic”。设置成 deterministic 时默认最小 3 位数字会被 使用 chunkIds moduleIds webpack 5 webpack 4 ⻓期缓存:确定的模块 Id、chunk 和导出名称 持久化缓存 在 Remote:被依赖⽅,被 Host 消费的 webpack 构建 • Host:依赖⽅,消费其他 Remote 的 webpack 构建 一个应用可以是 Host,也可以是 Remote,也可以同时是 Host 和 Remote。 开创性的特性:ModuleFederationPlugin 介绍 Webpack 内部通过 ModuleFederationPlugin 插件将多个应⽤结合起来。 • name:必须,唯⼀0 码力 | 40 页 | 12.03 MB | 1 年前3《玩转webpack》 第二章 基础篇: webpack 基础用法
基础篇:webpack 基础⽤用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略略 05 原理理篇:通过源码掌握 webpack 打包原理理 06 原理理篇:编写 Loader 和插件 07 实战篇:React 全家桶 和 webpack 开发商城项⽬目 08 基础篇:webpack 进阶⽤用法 03 核⼼心概念之 Entry Entry filename: '[name].js', path: __dirname + '/dist' } }; 通过占位符确保⽂文件名称的唯⼀一 核⼼心概念之 Loaders webpack 开箱即用只支持 JS 和 JSON 两种文件类型,通过 Loaders 去支持其它文 件类型并且把它们转化成有效的模块,并且可以添加到依赖图中。 本身是一个函数,接受源文件作为参数,返回转换的结果。 常⻅见的 Loaders 'raw-loader' } ] } }; test 指定匹配规则 use 指定使⽤用的 loader 名称 核⼼心概念之 Plugins 插件⽤用于 bundle ⽂文件的优化,资源管理理和环境变量量注⼊入 作⽤用于整个构建过程 常⻅见的 Plugins 有哪些? Plugins 的⽤用法 const path = require('path'); module.exports0 码力 | 41 页 | 2.52 MB | 1 年前3《玩转webpack》 第四章 进阶篇: 编写可维护的 webpack 构建配置
基础篇:webpack 基础用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略 05 原理篇:通过源码掌握 webpack 打包原理 06 原理篇:编写 Loader 和插件 07 实战篇:React 全家桶 和 webpack 开发商城项目 08 基础篇:webpack 进阶用法 03 构建配置抽离成 npm 包的意义 可维护性 ·开发环境:webpack.dev.js ·生产环境:webpack.prod.js ·规范:Git commit日志、README、ESLint 规范、Semver 规范 ·质量:冒烟测试、单元测试、测试覆盖率和 CI ·SSR环境:webpack.ssr.js …… ·基础配置:webpack.base.js 通过 webpack-merge 组合配置 > merge = require("webpack-merge") 升级补丁版本号:npm version patch 升级版本 升级小版本号:npm version minor 升级大版本号:npm version major 发布版本:npm publish Git 规范和 Changelog 生成 ·加快 Code Review 的流程 良好的 Git commit 规范优势: ·根据 Git Commit 的元数据生成 Changelog ·后续维护者可以知道0 码力 | 30 页 | 5.38 MB | 1 年前3
共 11 条
- 1
- 2