一个简单的gulp工作流项目

Posted 未知素设计

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个简单的gulp工作流项目相关的知识,希望对你有一定的参考价值。

Gulp.js在现在来说已经不是一个什么新鲜的事物,但是,在我们前端开发者的工作中依然发挥着重要的作用。按照官方的定义,Gulp.js是一个自动化构建工具,即开发者可以使用它在项目开发过程中自动执行常见任务,避免重复繁琐的操作,提高效率。从它诞生的那一刻起,就以易于使用、构建快速、插件高质、易于学习等优点二深受前端甚至后端开发者的青睐。


这篇展示如何构建一个简单的gulp工作流项目。开始之前,你先确保你的系统安装了node,这里以dev为开发目录,以dist为生产目录。

gulp-demo
├── dev           // 开发目录
|   ├── css
|   ├── img
|   └── js
├── gulpfile.js   // 任务创建文件
└── package.json  // 项目配置信息

全局安装gulp

npm install gulp -g

初始化

npm init


在gulp-demo目录下,该命令会引导你创建一个package.json文件,包括名称、版本、作者这些信息等。


基于项目安装gulp开发依赖

npm install gulp --save-dev

参数  --save-dev  会在安装包后自动更新package.json文件中devDependencies开发依赖字段的信息,而另外一个参数--save则是自动更新dependencies生产依赖字段的信息。前者表示仅在开发阶段依赖的包,后者表示发布之后仍然依赖的包,如gulp和jquery。


根据需要安装其他依赖

npm install gulp-sass --save-dev    // 编译sass
npm install gulp-autoprefixer --save-dev    // 自动补全兼容前缀
npm install gulp-tinypng --save-dev     // tinypng图片压缩
npm install gulp-uglify --save-dev    // 文件压缩;

demo就用了这几个,你可以在npmjs(https://www.npmjs.com/)中搜索关键字通常能找到你需要的包,每个包都给出了具体的使用方法,非常方便。


gulpfile.js中创建任务


根目录下新建一个gulpfile.js文件,以图片压缩任务为例:gulp.task('任务名字', callback回调);src()中是匹配模式;pipe()中文叫管道,类似加工的过程;tinypng()是引进gulp-tinypng后自定义的模块使用的方法,每个模块都可能提供一些参数实现特殊的用途;gulp.dest()输出的目录。

var gulp = require('gulp'),
    tinypng = require('gulp-tinypng')
;

/**
 * tinypng压缩
 * npm install --save-dev gulp-tinypng
 */
gulp.task('tinypng', function () {
    gulp.src('dev/img/*.{jpg,gif,jpeg,png}')
        .pipe(tinypng('gsbqKsmAKLeLDYVkAjSK5peWg1Cr6DRD'))
        .pipe(gulp.dest('dist/img'));
});

每个单独的任务都可以独自调用,如上面,当你需要压缩图片的时候,只需要执行

gulp tinypng

但一般很少这么执行,因为工作流任务通常分为两种:开发阶段的任务,如实时监听sass文件的修改自动编译;发布阶段的任务,如图片压缩、文件压缩


开发阶段任务


如监听sass文件的修改实时编译,watch()中是监听的文件匹配,['compile-sass']是前面创建的sass编译任务

gulp.task('sass:watch', function () {
    gulp.watch('dev/css/*.{sass,scss}', ['compile-sass']);
});

开发时执行

gulp sass:watch

发布阶段任务


像图片压缩这样工作是发布时候才需要,所以我们将多个类似这样的生产任务集合起来,创建发布任务

/**
 *  发布
 */
gulp.task('dist', ['tinypng', 'compile-sass', 'minify-js'], function () {
    console.log('done');
});

执行

gulp dist

具体代码请参考

demo(https://github.com/ryangun/gulp-demo)。

题外话,当你创建的工作流能满足团队某一项固定的工作,你会共享给别人,下面展示如何发布到github中。


初始化仓库


在gulp-demo目录下执行

git init

关联你的远程git仓库

git remote add origin git@github.com:yourname/gulp-demo.git

创建.gitignore文件,并添加忽略规则

touch .gitignore
// .gitignore文件
.gulp/
node_modules/
dist/

提交上传

git add .
git commit -m 'add gulp-demo'
git push


Done! 这样,别人就可以拿来使用了,使用方法请看demo:

https://github.com/ryangun/gulp-demo/blob/master/README.md




以上是关于一个简单的gulp工作流项目的主要内容,如果未能解决你的问题,请参考以下文章

自动化构建工具gulp简单介绍及使用

自动化构建工具gulp

使用gulp构建微信小程序工作流

无法让 Angular2 + gulp 项目工作

gulp的简单使用

简单的gulp构建实例+代理服务器