更多
更多
文章目录
  1. Gulp是什么?
  2. 安装nodejs
  3. 全局安装gulp
  4. 项目安装gulp
  5. 全局安装和本地安装区别
  6. 配置gulpfile.js(重要)
  7. 参考

Gulp任务自动管理工具的基本使用

此处输入图片的描述

Gulp是什么?

Gulp 是基于Node.js的自动任务运行器,利用它可以对网站资源进行优化,提高工作效率。

前端开发可以使用它来处理常见任务:

  • 搭建web本地服务器;
  • 文件保存时自动重载浏览器;
  • 使用预处理器如Sass/Less;
  • 优化资源,比如压缩CSS/JavaScript/图片;

使用Gulp的基本步骤为:

安装nodejs -> 全局安装gulp -> 项目安装gulp以及gulp插件 -> 配置gulpfile.js -> 运行任务

安装nodejs

gulp是基于nodejs,所以使用前需要安装nodejs

在操作过过程中不可避免的会使用到CLI(command-line interface,命令行界面),关于命令行可以了解一下npm 常用命令详解

npm(Node Package Manager,即node包管理器)是Node.js默认的以javascript编写的软件包管理系统。

选装cnpm

因为npm安装插件是从国外服务器下载,受网络影响大,可能出现异常,如果npm的服务器在中国就好了,所以我们乐于分享的淘宝团队干了这事。来自官网:“这是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。”

1
npm i -g cnpm
cnpm install

注:cnpm跟npm用法完全一致,只是在执行命令时将npm改为cnpm

全局安装gulp

1
$ npm install gulp -g

-g表示全局安装,将会安装在C:\Users\Administrator\AppData\Roaming\npm,并且写入系统环境变量,这样在电脑任何位置都能使用gulp命令,非全局安装:将会安装在当前定位目录,本地安装将安装在定位目录的node_modules文件夹下,通过require()调用;

--save 将保存配置信息至package.json(nodejs项目配置文件);

-dev 保存至package.json的devDependencies节点,不指定-dev将保存至dependencies节点;

全局安装gulp为了通过它执行gulp任务,执行gulp -v 检查是否正确安装;

项目安装gulp

1
$ npm init //创建package.json文件

package.json是基于nodejs项目必不可少的配置文件,它是存放在项目根目录的普通json文件;

安装包的信息可保持到项目的package.json文件中,比如项目用到的各种依赖,以便后续的其它的项目开发或者他人合作使用,也说package.json在项目中是必不可少的。

1
$ npm install gulp --save-dev

局部安装Gulp。使用–save-dev,将通知计算机在package.json中添加gulp依赖。

执行完之后,gulp将创建node_modules文件夹,里面有个gulp文件夹。

npm安装时会多出一个package-lock.json文件,这是新版本nodejs的原因,具体用处可参考:

npm-package-locks

package-lock.json有什么用?

以上,就安装好gulp了,接下来就是给gulp安装插件,不同的插件对应不同的任务功能。
这张图很有借鉴意义,干净整洁的项目环境啊~~
此处输入图片的描述

全局安装和本地安装区别

全局安装gulp是为了执行gulp任务,本地安装gulp则是为了调用gulp插件的功能。另参考:

nodejs全局安装和本地安装的区别

配置gulpfile.js(重要

gulpfile.js是gulp项目的配置文件,是位于项目根目录的普通js文件。

1
2
3
4
5
6
7
8
9
10
//导入工具包 告知node去node_modules中查找相关依赖包
var gulp = require('gulp'),
less = require('gulp-less');

//定义一个test任务(自定义任务名称)
gulp.task('test', function () {
gulp.src('src/less/index.less') //该任务针对的文件
.pipe(less()) //该任务调用的模块
.pipe(gulp.dest('src/css')); //将会在src/css下生成index.css
});
1
$ gulp test //执行test任务

gulp充分使用了“管道”思想,就是一个数据流(stream):src方法读入文件产生数据流,dest方法将数据流写入文件,中间是一些中间步骤,每一步都对数据流进行一些处理。

gulp模块方法

  • .src( )方法,用于产生数据流。它的参数表示所要处理的文件,这些指定的文件会转换成数据流。
  • .dest( )方法,将管道的输出写入文件,同时将这些输出继续输出,所以可以依次调用多次dest方法,将输出写入多个目录。如果有目录不存在,将会被新建。
  • .task( )方法用于定义具体的任务。它的第一个参数是任务名,第二个参数是任务函数。
  • .watch( )方法用于指定需要监视的文件。一旦这些文件发生变动,就运行指定任务。

常见的通配符写法

  • js/app.js:指定确切的文件名。
  • js/*.js:某个目录所有后缀名为js的文件。
  • js/*/.js:某个目录及其所有子目录中的所有后缀名为js的文件。
  • !js/app.js:除了js/app.js以外的所有文件。
  • *.+(css|js):+号后面会跟着圆括号,里面的元素用|分割,匹配多个选项。这里将匹配scss和sass文件。

后记:

具体到公司和个人情况,每个人的工作流程总是不相同的,需要的功能也不一致。

所以认真去总结每个项目的重复之处,思考可以解放双手的工作流程很重要,这是一个需要慢慢发现总结完善的过程~

参考

Gulp 中文文档

Gulp:任务自动管理工具 阮一峰老师的一个教程,以压缩js文件为例比较清晰细节的介绍了gulp的一些基本模块方法,很适合从0到1的操作;
gulp详细入门教程系列文章;
Gulp新手入门教程作者翻译的一篇适合新手入门的教程很实用

感谢阅读
公众号