gulp的安装使用与实例

本文详细介绍了Gulp的安装与使用,包括如何注册任务、读取与操作文件、输出到文件、监视文件变化,以及如何执行任务和批量任务。还通过实例展示了如何整理HTML文件、拷贝图片、处理SASS到CSS并压缩、合并JS并压缩以及监听文件更新。Gulp作为前端自动化工具,极大地提高了项目构建的效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

gulp安装与使用

简介

gulp是一个基于Node.js的前端自动化构建工具,主要用来设定程序自动处理静态资源的工作。简单的说,gulp就是用来打包项目的。

guip官网

guip 中文官网

安装

安装前先在控制台输入

node -v

确认已经安装Node.js

Node.js版本可能会和gulp版本不兼容,此时最好的办法就是用nvm,对Node.js版本进行管理

nvm官方网址

全局安装:

目前gulp的最新版本是4.1.0,3.9.1是目前比较稳定的版本

npm i gulp@3.9.1 -g

gulp -v # 测试是否安装成功

局部安装:

cnpm install gulp@3.9.1 --save-dev

–save 将这个文件,安装到本地的当前文件夹
-dev 将安装gulp的信息保存在package.json里面

gulp提供的接口

注册任务
gulp.task(name[,deps],fn)

参数:

name是任务名称,执行任务时,使用这个名称

fn是一个回掉函数,代表这个任务要做的事情

例:

gulp.task("print",function(){
console.log("123456");
})
读取与操作文件

globs
类型:字符串或者数组

将本地文件读取到gulp内存中

gulp.src(globs[, options])

参数:

src方法主要是用来读取目标源文件,所以参数就是一个目标源文件的路径

globs 数据类型:string/array

查找文件的规则如下:

1.指定具体文件

src/a.js

2.匹配所有文件

src/*.js(包含src下的所有js文件);

3.匹配0个或多个子文件夹

src/**/*.js(包含src的0个或多个子文件夹下的js文件);

4.匹配多个属性

src/{a,b}.js(包含a.js和b.js文件) src/*.{jpg,png,gif}(src下的所有jpg/png/gif文件);

5.排除文件

!src/a.js(不包含src下的a.js文件);

输出到文件

将内存中数据输出到本地文件中

gulp.dest(path[,options])

参数:

dest方法主要用来将数据输出到文件中,所以参数就是目标文件路径

如果设置的这个目的文件路径不存在,则会自动创建

监视文件

用来监视某个或某些文件发生变化,可以在变化的时候,执行一个回掉函数,以保证文件中的代码和效果一致

gulp.watch()
执行任务

在命令行使用gulp命令,后面跟任务名称:

gulp 任务名称
批量执行任务

单词执行多个任务时,效率会很低,所以gulp提供了一个默认任务,可以将要执行的所有任务放在一个数组中,这样只需要执行这个默认任务就能执行数组中的所有任务

gulp.task("print1", function() {
    console.log("123456");
})
gulp.task("print3", function() {
    console.log("123456");
})

gulp.task("default", ["print1", "print3"]);
gulp插件

我们要处理文件的合并、压缩等操作,接口中没有提供,都放在了插件中。

插件下载:

功能下载
gulp-concat合并文件(js/css)cnpm install gulp-concat --save-dev
gulp-uglify压缩js文件cnpm install gulp-uglify --save-dev
gulp-rename文件重命名cnpm install gulp-rename --save-dev
gulp-less编译lesscnpm install gulp-less --save-dev
gulp-sass编译sasscnpm install gulp-sass --save-dev
gulp-clean-css压缩csscnpm install gulp-clean-css --save-dev
gulp-livereload实时自动编译刷新cnpm install gulp-livereload --save-dev
gulp-htmlmin压缩html文件cnpm install gulp-htmlmin --save-dev
gulp-connect热加载,配置一个服务器cnpm install gulp-connect --save-dev
gulp-load-plugins打包插件(里面包含了其他所有插件)cnpm install gulp-load-plugins --save-dev

guip实例

整理html文件
gulp.task("copy-html", function(){
     return gulp.src("*.html")
    .pipe(gulp.dest("dist/"))
    .pipe(connect.reload());
})
拷贝图片
gulp.task("images", function(){
	//拷贝img下后缀为jpg的图片到指定路径
    // return gulp.src("img/*.jpg").pipe(gulp.dest("dist/images"));

	//拷贝img下后缀为jpg或png的图片到指定路径
    // return gulp.src("img/*.{jpg,png}").pipe(gulp.dest("dist/images"));

	//拷贝img下二级目录的所有文件拷贝到指定路径
    // return gulp.src("img/*/*").pipe(gulp.dest("dist/images"));

	//拷贝img下一级目录和二级目录的所有文件拷贝到指定路径
    return gulp.src("img/**/*").pipe(gulp.dest("dist/images"))
    .pipe(connect.reload());
})
拷贝多个文件到一个目录中
gulp.task("data", function(){
    return gulp.src(["json/*.json", "xml/*.xml", "!xml/04.xml"])
    .pipe(gulp.dest("dist/data"))
    .pipe(connect.reload());
})
sass转css并压缩
const sass = require("gulp-sass");
//压缩css  gulp-minify-css
const cleancss = require(" gulp-clean-css");
//重命名插件 gulp-rename
const rename = require("gulp-rename");

gulp.task("sass", function(){
    return gulp.src("stylesheet/index.scss")
    .pipe(sass())
    .pipe(gulp.dest("dist/css"))
    .pipe(cleancss ())
    .pipe(rename("index.min.css"))
    .pipe(gulp.dest("dist/css"))
    .pipe(connect.reload());
})
合并js并压缩
const concat = require("gulp-concat");
const uglify = require("gulp-uglify");

gulp.task("scripts", function(){
    return gulp.src("javascript/*.js")
    .pipe(concat("index.js"))
    .pipe(gulp.dest("dist/js"))
    .pipe(uglify())
    .pipe(rename("index.min.js"))
    .pipe(gulp.dest("dist/js"))
    .pipe(connect.reload());
})
监听更新数据
gulp.task("watch", function(){
    /* 
        第一个参数,是文件监听的路径
        第二个参数,我们要去执行的任务
    */
    gulp.watch("*.html", ["copy-html"]);
    gulp.watch("img/**/*", ["images"]);
    gulp.watch(["json/*.json", "xml/*.xml", "!xml/04.xml"], ["data"]);
    gulp.watch("stylesheet/index.scss", ['sass']);
    gulp.watch("javascript/*.js", ['scripts']);
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值