gulp自动化开发工具
gulp基础应用
gulp task指令使用
// 引用下载好的三方模块
// gulp
const gulp = require("gulp")
// 1、task gulp指令绑定
// task ("指令名", 指令执行函数)
gulp.task("hello", () => {
console.log("hello world")
})
// 使用 cmd 之中输入 gulp hello
// 加 async
gulp.task("hello", async () => {
console.log("hello world")
})
// 如果函数前面不加上async 的话, 会导致指令无法完成;
src和pipe使用
// src 找到源文件 ,dest 转存文件 pipe 数据处理API
// 过程如下:
// 1. 找到源文件
// src 路径的其实就是从项目文件夹开始的, 和 gulpfile.js 同级
// gulp的数据处理 : 找到文件读取文件数据 => 当成一个流去处理;
// 如果后续需要处理数据,那么我们可以把这个数据放进管道之中;
// 2. pipe 处理src找到的数据
// 我们所有对数据的操作都是在管道之中进行的;
// 我们会以参数的形式向管道之中放入要处理数据的回调函数;
// 3.dest
// 把数据流转存到固定的地址;
gulp.task("html", async () => {
gulp.src("./src/index.html")
.pipe(gulp.dest("./dist/"))
})
watch的使用
gulp.task("html", async () => {
gulp.src("./src/index.html")
.pipe(gulp.dest("./dist/"))
})
// gulp 监听 : 这个API会检测文件的改变 自动执行指令;
// API : watch 监听改变的文件路径 需要执行的指令
// gulp指令执行AIP
// gulp.parallel(); 异步执行:多个指令可以同时执行
// gulp.series(); 同步执行:上一个指令不执行完成,下一个指令不执行
gulp.task("watch", async () => {
// 监听
await gulp.watch("./src/index.html", gulp.parallel("html"))
})
gulp高级应用
// 1、找到所有的源文件 分类是通过html src css js 等等
gulp.task("html", async ()=>{
gulp.src(["./src/index.html","./src/login.html","./src/register.html"])
.pipe(gulp.dest("./dist/"))
})
// 说说gulp 高级应用
// 1、找到所有的源文件 分类是通过html src css js 等等
gulp.task("html", async () => {
// gulp.src(["./src/index.html", "./src/login.html", "./src/register.html"])
// .pipe(gulp.dest("./dist/"))
// // 但是上面文件一个一个的太麻烦 怎么办呢???
// // 解决:可以加入正则规则 ; * 表示任意名称
// gulp.src(["./src/*.html"])
// .pipe(gulp.dest("./dist"))
// // 排除法 : ! 表示 除了某个文件以外
// gulp.src(["./src/*.html", "!./src/ativepage.html"])
// pipe(gulp.dest("./dist"))
// 但是当我们文件层级较深时,需要注意路径编写
// 无论层级都能拿到 : **/*
// 通过结构优化 可以保密文件
gulp.src(["./src/**/*.html", "!./src/html/shit/*.html"])
.pipe(gulp.dest("./dist/"))
})
// 2、一个js指令绑定
// 1、两个部分
// 1、libs部分 开头转存一次就结束 比如jQuery
// 2、可能经常更改的业务部分 index.js
gulp.task("js", async () => {
gulp.src(["./src/js/**/*.js"])
.pipe(gulp.dest("./dist/js"))
})
// 3、默认指令 | 组合指令
gulp.task("default", gulp.series("html", "js")); //同步列队
gulp.task("default", gulp.parallel("html", "js")); //异步列队
// 这个默认指令在cmd之中可以直接使用 gulp 执行,省略 default 指令
gulpfile.js
// 引用下载好的三方模块
// gulp
const gulp = require("gulp")
// 1、task gulp指令绑定
// task ("指令名", 指令执行函数)
gulp.task("hello", () => {
console.log("hello world")
})
// 使用 cmd 之中输入 gulp hello
// 加 async
gulp.task("hello", async () => {
console.log("hello world")
})
// 如果函数前面不加上async 的话, 会导致指令无法完成;
// src 找到源文件 ,dest 转存文件 pipe 数据处理API
// 过程如下:
// 1. 找到源文件
// src 路径的其实就是从项目文件夹开始的, 和 gulpfile.js 同级
// gulp的数据处理 : 找到文件读取文件数据 => 当成一个流去处理;
// 如果后续需要处理数据,那么我们可以把这个数据放进管道之中;
// 2. pipe 处理src找到的数据
// 我们所有对数据的操作都是在管道之中进行的;
// 我们会以参数的形式向管道之中放入要处理数据的回调函数;
// 3.dest
// 把数据流转存到固定的地址;
gulp.task("html", async () => {
gulp.src("./src/index.html")
.pipe(gulp.dest("./dist/"))
})
// gulp 监听 : 这个API会检测文件的改变 自动执行指令;
// API : watch 监听改变的文件路径 需要执行的指令
// gulp指令执行AIP
// gulp.parallel(); 异步执行:多个指令可以同时执行
// gulp.series(); 同步执行:上一个指令不执行完成,下一个指令不执行
gulp.task("watch", async () => {
// 监听
await gulp.watch("./src/index.html", gulp.parallel("html"))
})
// 说说gulp 高级应用
// 1、找到所有的源文件 分类是通过html src css js 等等
gulp.task("html", async () => {
gulp.src(["./src/index.html", "./src/login.html", "./src/register.html"])
.pipe(gulp.dest("./dist/"))
// 但是上面文件一个一个的太麻烦 怎么办呢???
// 解决:可以加入正则规则 ; * 表示任意名称
gulp.src(["./src/*.html"])
.pipe(gulp.dest("./dist"))
// 排除法 : ! 表示 除了某个文件以外
gulp.src(["./src/*.html", "!./src/ativepage.html"])
pipe(gulp.dest("./dist"))
// 但是当我们文件层级较深时,需要注意路径编写
// 无论层级都能拿到 : **/*
// 通过结构优化 可以保密文件
gulp.src(["./src/**/*.html", "!./src/html/shit/*.html"])
.pipe(gulp.dest("./dist/"))
})
// 2、一个js指令绑定
// 1、两个部分
// 1、libs部分 开头转存一次就结束 比如jQuery
// 2、可能经常更改的业务部分 index.js
gulp.task("js", async () => {
gulp.src(["./src/js/**/*.js"])
.pipe(gulp.dest("./dist/js"))
})
// 3、默认指令 | 组合指令
gulp.task("default", gulp.series("html", "js")); //同步列队
gulp.task("default", gulp.parallel("html", "js")); //异步列队
// 这个默认指令在cmd之中可以直接使用 gulp 执行,省略 default 指令
gulp使用教程
1. 初始化当前项目
建立一个package.json
npm init -y
2. 下载必须的依赖
gulp v 4.x.x
gulp-cli v 2.x.x
- gulp-cli : 全局的gulp工具下载后在cmd 之中提供
gulp
指令 4.x.x - gulp : gulp 的核心代码。 2.x.x
tip : 如果版本不对请先卸载 gulp npm uninstall gulp -g
- 安装gulp-cli :
npm install gulp-cli -g
指定版本安装 : npm install gulp-cli@2.2.0 -g
成功之后 :cmd 之中使用 gulp -v
指令 可以查看版本 ;
如果出现 : gulp 不是内部或外部命令,也不是可运行的程序或批处理文件。 则表示安装失败 ;
- 1. 先关闭 cmd 重启 , 如果还是这样那么执行下列步骤
- 2. 清缓存 : `npm cache clear --force 强制清除缓存;
- 3. 卸载全局gulp `npm uninstall gulp -g` 重装 ;
- 4. 重复 2, 3 步骤 ,进入到 C:\Users\你的用户名 删除.npmrc 重装;
- 在指定的文件夹之中安装(项目文件夹) gulp 核心程序;
- 安装 gulp 核心文件
npm install gulp --save-dev
- 安装 gulp 核心文件
成功 :
1. cmd里面看到 +gulp@4.x.x 没有 err 即可
2. package.json 里面多了 `"devDependencies": {"gulp": "^4.0.2"}`
测试gulp是否可以运行 :
gulp -v
:
CLI version: 2.3.0 全局版本
Local version: 4.0.2 本地版本
3. GULP 配置
-
在项目目录的第一层级 建立一个文件
gulpfile.js
gulpfile.js 是gulp默认读取的配置文件,gulp做些啥,都是由gulpfile.js 说了算的。
我们所谓的工程化环境配置其实都是些在 gulpfile.js 之中的;
工程化
工程化环境
问题解决
- 环境配置问题 : 测试服务器;
- 反向代理接口 ;
- 浏览器实时刷新的;
- ES6 => ES5 编译 ;
- sass => css 编译 ;
- css 代码压缩 ;
- js 代码压缩 ;
- 问题解决的方式不统一 ; 统一规划和问题解决方案;
工程化环境
- GULP : 基于GULP搭建工程化项目;
- webpack : 基于webpack搭建工程化项目;
GULP
GULP 和 nodejs 一样也是一个平台 : 平台提供了相应的规范,所以我们在使用这个平台的时候相对容易;
-
GULP 基本使用
-
GULP 插件配合
工程化项目的基本结构
---|项目文件夹/
---| package.json // 项目说明书;
---| package.lock.json // 项目使用到的工具详细的版本说明;
---| src/ // 开发目录
---| javascript/
---| libs/
---| jQuery.js
---| waterfall.js
---| lazyload.js
---| index.js
---| scss/
--- | libs /
---| _color.scss
---| _size.scss
---| _maxin.scss
---| _xxx.scss
---| index.scss
---| index.html
---|
---| dist/ // 发布目录 => 这个文件夹之中的所有内容都是工程化工具给我们生成的我们不去更改这个文件夹内的任何内容;
工程化项目迁移
-
核心文件迁移 :
- package.json : 项目的配置说明;
- package.lock.json : 让项目可以下载可靠的依赖;
- gulpfile.js : gulp的整体配置;
-
安装依赖 :
使用npm install
或npm i
指令, nodejs会根据package.json里面的内容进行依赖下载;
工程化环境的区分
-
dev 环境 开发环境 => 写代码看效果 ; 写代码保存频率非常高, 工程化环境应当尽量精简, 展示速度应该相对较快;
-
build 生产环境 => 代码质量要求最高 , 该压缩的,该转义的,该去掉空格的…
-
获取cmd 命令行里面的参数;