前端任务构建利器Gulp.js怎么用
小编给大家分享一下前端任务构建利器Gulp.js怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
安装Gulp.js
Gulp.js跟Grunt一样,都是基于Node的任务运行工具。所以你必须安装Node来运行它。有几种不同的方法可以安装Gulp,取决于你的操作系统。在OS X中,我用nvm,这是TimCaswell写的用于管理多个Node.js版本的很不错的脚本工具。你也可以直接从Node.js官方网站下载二进制文件。如果你对Node还一无所知的话,那我建议你最好去Nettuts+series先熟悉一下Node.js。
我们可以用npm(Node包管理器)来快速安装Gulp。打开你的终端然后输入:
npm install -g gulp
这条指令,从npm的注册机制中获取gulp并全局安装到你的系统中,以便你可以直接在命令行中访问它。
安装好了gulp,下面我们开始在项目中来使用它。
使用Gulp.js创建你的项目
要在项目中使用Gulp,必须完成下面关键几点:
安装两个依赖包
安装任何你想使用的插件
创建Gulp.js文件然后定义你打算运行的任务
请在项目的路径下完成以上几点,这样Gulp才能使用你的配置文件。
首先,安装依赖包:
npm install --save-dev gulp gulp-util
现在我们需要安装在配置文件中定义好的用来运行指定任务的Gulp插件。这些插件都是Node包,所以我们再次使用npm来安装它们。
npm install --save-dev gulp-uglify gulp-concat
我这里安装两个插件,让我可以使用Uglify.js压缩器来精简/压缩JavaScript代码并且将多个JS文件合并到一个文件中去。
注意,我这里用的—save-dev,这个指令让我只在当前项目中安装Gulp依赖包跟插件。这么做可以在package.json中的devDependencies列表中为每个依赖项生成对应的词条标识。就像下面展示的:
{ "devDependencies": { "gulp-util": "~2.2.13", "gulp": "~3.5.0", "gulp-uglify": "~0.2.0", "gulp-concat": "~2.1.7" }}
这样可以确保使用npm为项目安装任何依赖包和插件。如果在项目中没有package.json文件,那在命令行输入npm init或者干脆在编辑器中手动创建一个,写好对应的卷括号,然后保存命名为”package.json”。在命令行中输入npm指令来更新它。请注意,必须要使用卷括号,不然,当你试图使用—save-dev时,npm会抛出一个错误显示它不是一个合法的JSON文件。
虽然在本篇指南中我只用了两个插件,不过Gulp提供了超过200个插件来满足不同的功能需求,包括:
LiveReload(gulp-livereload)
JSHint(gulp-jshint)
Sass(gulp-sass)
CoffeeScript file compilation(gulp-coffee)
还有好多好多···
Gulpfile.js文件
跟Grunt一样,Gulp有一个叫做gulpfile.js的同名配置文件,里面定义了运行任务的所有的必须的插件。你要在项目的根目录下创建这个文件。
简单直白的语法,让gulp文件非常易读能懂:
var gulp = require('gulp'),gutil = require('gulp-util'),uglify = require('gulp-uglify'),concat = require('gulp-concat');
上面代码简单告诉gulp需要引用哪些插件来完成既定的任务。
下一步,我们需要定义Gulp运行的任务。我这里,定义两个:
压缩图片
精简JS文件
我们使用Gulp的方法task()来定义要运行的任务:
gulp.task('js', function () { gulp.class="lazy" data-src('./js/*.js') .pipe(uglify()) .pipe(concat('all.js')) .pipe(gulp.dest('./js'));});
看看上面的代码,用的是引用的插件组成的一个混合方法调用。第一个方法task(),使用一个名称代表当前任务(这里就叫'js'),还有一个匿名方法囊括了实际的操作。我们来拆解一下代码:
gulp.class="lazy" data-src('./js/*.js')
class="lazy" data-src()方法指定了要从哪里找到需要压缩的JS文件,并且将其转换成包含文档结构的数据流以传入后续运行的插件中。这是Node.jsStreams API中的一部分,也正是Gulp拥有简明API语法的原因之一。
.pipe(uglify())
pipe()方法从class="lazy" data-src()方法中获得传过来的数据流,然后传入指定的插件中。在当前例子中,插件uglify将接收数据流。
.pipe(concat('all.js'))
像uglify一样,插件concat通过pipe()接收传过来的数据流,然后将多个JS文件合并到'all.js'中。
.pipe(gulp.dest('./js'));
最后,使用Gulp的dest()方法,将all.js写到指定目录中,整个过程简介易读。
还有最后一个我们要做的事情,就是更改Gulp的默认运行任务为”js”。
gulp.task('default', function(){ gulp.run('js'); });
返回到命令行,输入'gulp',Gulp找到了gulpfile.js文件,加载所有的依赖项跟插件,运行默认任务'js'。你可以在最后的运行结果,文件被压缩合并了
让我们更近一步吧。Gulp提供了另外一个方法叫watch(),它可以监视指定的资源变更。跟手动输入'gulp'运行任务不同,这个方法允许根据资源的改变自动运行任务。
gulp.watch('./js/*', function () { gulp.run('js');});
当上面的代码运行的时候,Gulp会继续保持对指定资源的监视,一旦资源发生变更,就会再次运行'js'方法。这个功能很棒!
向Gulp.js过渡
当我刚听说Gulp的时候,我第一反应就是“又一个超棒的工具!”。Gulp.js确实拥有着吸引人的语法跟API,它让构建任务变得轻而易举。尽管插件没有Grunt丰富,但是它的插件库看起来已经在日趋增长,特别是现在拥有着对它感兴趣的这么多的开发者。
以上是“前端任务构建利器Gulp.js怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341