Gulp 入门指南
后面的章节中如果代码中存在 gulp.watch 并在命令行运行了 gulp 则需要使用 Ctrl + C 退出任务。 npm 模块管理器 如果你了解 npm 则跳过此章节 若你不了解npm 请阅读 npm模块管理器 安装 gulp npm 是 node 的包管理工具,可以利用它安装 gulp 所需的包。(在安装 node 时已经自动安装了 npm) 在命令行输入 npm install 若一直没安装成功,请使用 cnpm 安装(npm的国内加速镜像) 意思是:使用 npm 安装全局性的( -g ) gulp 包。 如果你安装失败,请输入 sudo npm install -g gulp 使用管理员权限安装。(可能会要求输入密码) 安装时请注意命令行的提示信息,安装完成后可在命令行输入 gulp -v 以确认安装成功。 至此,我们完成了准备工作。接着让 gulp 开始帮我们干活吧! gulp 代码。 你可以在 nimojs/gulp-demo 查看完整代码。 若你不了解npm 请务必阅读 npm模块管理器 package.json 如果你熟悉 npm 则可以利用 package.json 保存所有 npm install --save-dev gulp-xxx 模块依赖和 模块版本。 在命令行输入 npm init 会依次要求补全项目信息,不清楚的可以直接回车跳过 name:0 码力 | 36 页 | 275.87 KB | 1 年前3《玩转webpack》 第四章 进阶篇: 编写可维护的 webpack 构建配置
文档、ChangeLog 文档等 ·冒烟测试、单元测试、测试覆盖率 ·持续集成 构建配置管理的可选方案 将构建配置设计成一个库,比如:hjs-webpack、Neutrino、webpack-blocks 通过多个配置文件管理不同环境的构建,webpack --config 参数进行控制 抽成一个工具进行管理,比如:create-react-app, kyt, nwb 将所有的配置放在一个文件,通过 将所有的配置放在一个文件,通过 --env 参数控制分支选择 构建配置包设计 通过多个配置文件管理不同环境的 webpack 配置 抽离成一个 npm 包统一管理 ·开发环境:webpack.dev.js ·生产环境:webpack.prod.js ·规范:Git commit日志、README、ESLint 规范、Semver 规范 ·质量:冒烟测试、单元测试、测试覆盖率和 CI ·SSR环境:webpack https://travis-ci.org/account/repositories 为项目开启 3. 项目根目录下新增 .travis.yml travis.yml 文件内容 install 安装项目依赖 script 运行测试用例 发布到 npm 添加用户: npm adduser 升级补丁版本号:npm version patch 升级版本 升级小版本号:npm version minor0 码力 | 30 页 | 5.38 MB | 1 年前3《玩转webpack》 第二章 基础篇: webpack 基础用法
08 基础篇:webpack 进阶⽤用法 03 核⼼心概念之 Entry Entry ⽤用来指定 webpack 的打包⼊入⼝口 理理解依赖图的含义 依赖图的⼊入⼝口是 entry 对于⾮非代码⽐比如图⽚片、字体依赖也会 不不断加⼊入到依赖图中 Entry 的⽤用法 module.exports = { entry: './path/to/my/entry/file.js' }; 通过占位符确保⽂文件名称的唯⼀一 核⼼心概念之 Loaders webpack 开箱即用只支持 JS 和 JSON 两种文件类型,通过 Loaders 去支持其它文 件类型并且把它们转化成有效的模块,并且可以添加到依赖图中。 本身是一个函数,接受源文件作为参数,返回转换的结果。 常⻅见的 Loaders 有哪些? Loaders 的⽤用法 const path = require('path'); module use: 'raw-loader' } ] } }; test 指定匹配规则 use 指定使⽤用的 loader 名称 核⼼心概念之 Plugins 插件⽤用于 bundle ⽂文件的优化,资源管理理和环境变量量注⼊入 作⽤用于整个构建过程 常⻅见的 Plugins 有哪些? Plugins 的⽤用法 const path = require('path'); module.exports0 码力 | 41 页 | 2.52 MB | 1 年前3《玩转webpack》第八章 实战篇: React 全家桶 和 webpack 开发商城项巨
商城技术栈选型 前端 后端 商城架构设计 平台层 ⾸首⻚页 列列表⻚页 购物⻋车⻚页 商品管理理 订单管理理 ⽤用户端 管理理后台 服务层 基础设施 商品服务 订单服务 购物⻋车服务 搜索服务 ⽀支付服务 评论服务 CI/CD …… 订单⻚页 详情⻚页 登陆/注册 ⽤用户信息管理理 商城界⾯面 UI 设计与模块拆分 主⻚页 类⽬目⻚页 详情⻚页 登陆/注册 前台模块拆分 react-dom redux react-redux -S · 安装 geektime-builder-webpack npm i geektime-builder-webpack -D 安装依赖 · 安装 @babel/core npm i @babel/core -D · actions 和 reducers src/actions/ 放置所有的actions、src/reducers0 码力 | 25 页 | 5.67 MB | 1 年前3《玩转webpack》第六章 原理篇: 通过源码掌握 webpack 打包原理
program seal emit 初始化option 开始编译 从entry开始递归的 分析依赖,对每个 依赖模块进行build 对模块位置进行解析 将loader加载完成的 module进行编译,生成 AST树 遍历AST,当遇到 require等一些调用表 达式时,收集依赖 所有依赖build完 成,开始优化 输出到dist目录 build-module 开始构建某个模块 ‘b’] NormalModule Build ·使用 loader-runner 运行 loaders ·通过 Parser 解析 (内部是 acron) ·ParserPlugins 添加依赖 Compilation hooks 模块相关: ·build-module ·failed-module ·succeed-module 资源生成相关: ·module-asset webpack 先将 entry 中对应的 module 都生成一个新的 chunk 2. 遍历 module 的依赖列表,将依赖的 module 也加入到 chunk 中 3. 如果一个依赖 module 是动态引入的模块,那么就会根据这个 module 创建一个 新的 chunk,继续遍历依赖 4. 重复上面的过程,直至得到所有的 chunks 模块化:增强代码可读性和维护性 传统的网页开发转变成0 码力 | 39 页 | 3.66 MB | 1 年前3《玩转webpack》加餐:webpack5专题
includes 语法已被废弃 • 可以通过 Rule.parser.requireInclude 将⾏为改为允许、废弃或禁⽤。 webpack 5 webpack 4 之前的版本是:如果某个模块依赖 Node.js 里面的核心模块,那么这个模块被引入的时候会把 Node.js 整个 polyfill 顺带引入。 功能清除:不再为 Node.js 模块引⼊ polyfill 功能清除:不再为 发明者:Zack Jackson 基本解释:使 ⼀个JavaScript 应⽤在运⾏过程中可以动态加载另⼀个应⽤的代码,并⽀持共享依赖(CDN)。不再需要 本地安装 npm 包。 • Remote:被依赖⽅,被 Host 消费的 webpack 构建 • Host:依赖⽅,消费其他 Remote 的 webpack 构建 一个应用可以是 Host,也可以是 Remote,也可以同时是 Host library:必须,其中这⾥的 name 为作为 umd 的 name; • remotes:可选,表示作为 Host 时,去消费哪些 Remote; • shared:可选,优先⽤ Host 的依赖,如果 Host 没有,再⽤⾃⼰的; • main.js:应⽤主⽂件 • remoteEntry.js:作为 remote 时被引的⽂件 开创性的特性:模块联邦使⽤案例 应用一(host) 应用二(remote)0 码力 | 40 页 | 12.03 MB | 1 年前3《玩转webpack》第五章 进阶篇: webpack 构建速度和体积优化策略
速度分析插件作用 分析整个打包总耗时 每个插件和loader的耗时情况 webpack-bundle-analyzer 分析体积 代码示例 构建完成后会在 8888 端口展示大小 可以分析哪些问题? 依赖的第三方模块文件大小 业务里面的组件代码大小 使用高版本的 webpack 和 Node.js 构建时间降低了 60%-98%! 使用 webpack4:优化原因 V8 带来的优化(for HappyPack工作流程 原理:每次 webapck 解析一个模块,HappyPack 会将它及它的依赖分配给 worker 线程中 代码示例 多进程/多实例:使用 thread-loader 解析资源 原理:每次 webpack 解析一个模块,thread- loader 会将它及它的依赖分配给 worker 线程中 多进程/多实例:并行压缩 方法一:使用 parallel-uglify-plugin0 码力 | 36 页 | 8.13 MB | 1 年前3《玩转webpack》第七章 原理篇: 编写 Loader 和插件
}; b-loader.js: loader-runner 介绍 定义:loader-runner 允许你在不安装 webpack 的情 况下运行 loaders ·作为 webpack 的依赖,webpack 中使用它执行 loader ·进行 loader 的开发和调试 作用: loader-runner 的使用 import { runLoaders } from "loader-runner"; 中使用缓存 webpack 中默认开启 loader 缓存 ·可以使用 this.cacheable(false) 关掉缓存 缓存条件: loader 的结果在相同的输入下有确定的输出 ·有依赖的 loader 无法使用缓存 loader 如何进行文件输出? 通过 this.emitFile 进行文件写入 const loaderUtils = require("loader-utils");0 码力 | 29 页 | 4.37 MB | 1 年前3
共 8 条
- 1