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的原因,具体用处可参考:
以上,就安装好gulp了,接下来就是给gulp安装插件,不同的插件对应不同的任务功能。
这张图很有借鉴意义,干净整洁的项目环境啊~~
全局安装和本地安装区别
全局安装gulp是为了执行gulp任务,本地安装gulp则是为了调用gulp插件的功能。另参考:
配置gulpfile.js(重要
)
gulpfile.js是gulp项目的配置文件,是位于项目根目录的普通js文件。
1 | //导入工具包 告知node去node_modules中查找相关依赖包 |
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:任务自动管理工具 阮一峰老师的一个教程,以压缩js文件为例比较清晰细节的介绍了gulp的一些基本模块方法,很适合从0到1的操作;
gulp详细入门教程系列文章;
Gulp新手入门教程作者翻译的一篇适合新手入门的教程很实用