1. 安装nodejs

  • 去 https://nodejs.org/en/下载安装文件安装即可。

  • 安装完成后,在终端输入node -v回车打印出nodejs的版本号,说明nodejs安装成功。

  • 在终端输入npm -v
    回车打印出npm的版本号,说明npm也安装成功(node安装包中已集成了npm,因此在安装nodejs的同时也安装了npm)。

  • 这里推荐用nvm安装。附上链接地址 http://www.cnblogs.com/yesyes/p/7403184.html

2. 设置npm

由于https://www.npmjs.com在国内访问不稳定,因此建议使用国内镜向站点https://npm.taobao.org
具体方法如下:

这个在windows下找到了npmrc。 mac下暂时还没找到。

3. 安装gulp(全局)

  • 在终端输入npm install gulp -g

  • 安装完成后,同样输入gulp -v输出相应的版本号,则说明安装成功。

至此gulp安装完成


4. 配置项目

下面以一个简单案例来做演示:创一个gulp文件夹作为项目根目录,项目结构如下:!

我们以常用的 gulp-uglify、gulp-concat、gulp-minify-css为例。
先是配置package.json文件,有三种方法:

  • 可以用记事本之类的创建一个

  • 用npm init建

  • 也可以复制之前项目的创建好的package.json

我们用npm init 的方法来创建package.json
在终端将当前目录切换至项目所在目录,然后输入npm init,一路回车,最终在项目根目录下生成package.json:

{
"name": "gulp_test", /*项目名,切记这里命名不要与模块一样,如命名为gulp,要地安装gulp时就会出错*/
"version": "1.0.0", /*版本号*/
"description": "", /*描述*/
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "", /*作者*/
"license": "ISC" /*项目许可协议*/
}

注释是我自己加的,npm init生成是没有注释的,而且json文件也不支持注释,这点得注意!

5. 本地安装gulp及gulp插件

本地安装gulp

npm install gulp --save-dev

安装完成后,我们再看项目中的变化:
如图:

  1. gulp模块下载到项目中的node_modules文件夹中。

  2. package.json中写入了devDependencies字段,并在该字段下填充了gulp模块名

--svae-dev 的作用就是将刚才安装的模块写入package.json中。

大家可能会觉得有些奇怪,刚不是安装了gulp吗?对,那是全局安装,为的是能在端终运行gulp任务的,这里是项目级别的安装,真正的gulp模块安装到项目的node_modules/下了,后面的插件都是依赖gulp模块的。

本地安装gulp插件

接下来安装上面提到的三个插件,在终端中输入
npm install --save-dev gulp-uglify gulp-concat gulp-minify-css
安装完成,如下图

6. 创建gulpfile.js文件

在项目根目录下创建gulpfile.js文件,然后编写如下代码,这些代码没什么好解释的,具体可以参考gulp的api

/*引入gulp及相关插件 require('node_modules里对应模块')*/
var gulp = require('gulp');
var minifyCss = require("gulp-minify-css");
var uglify = require('gulp-uglify');
var concat = require('gulp-concat');
//压缩
gulp.task('minify-css', function () {
gulp.src('css/*.css')
.pipe(minifyCss())
.pipe(gulp.dest('dist/css/'));
});
//
gulp.task('script', function () {
gulp.src(['src/a.js',"src/b.js"])
.pipe(concat('all.js'))
.pipe(uglify())
.pipe(gulp.dest('dist/js'));
});
gulp.task('default',['minify-css','script']);

实际的项目肯定没这么简单,想想我们一般不可能对某几个文件操作,应该是对一批文件操作,那样的涉及到文件匹配的问题了,暂时不展开了。

7. 运行gulp

可以看到,我们在gulpfile.js创建了3个任务,其实是两个,最后一个是合并上面两个任务。
然后我们就可以在终端来运行上面的作务了,在终端输入

gulp minify-css

运行结果如下图:在dist/css/目录下生成了我们压缩后的css文件。

8. 用webStrom运行

到目前为至,大家基本知道gulp在项目中的运用了,只少基本流程是没问题了。但是,时刻使用终端还是不怎么方便的,下面我们直接在webStrom中运行上面的gulp任务。
在webStrom中打开gulpfile.js文件 》右键选择 Show Gulp Tasks 》Gulp面板上已经列出gulpfile.js创建的任务 》选中任务运行即可。
是不是非常方便!

小结

看似步骤不少,其实没几步,我们是从零开如说起的主要是为了演示整个过程理解其中的原理,对于一般用户来说,nodejs npm应该早装好了。
其实我们主要需要做的如下:

    1. 创建package.json,上面我们使用的 npm init方法,实际操作中我们一般是把之前创建好的package.json直接拿过来,放到项目根目录下,然后 npm install 一下,这样我们要用到的gulp插件自动就安装好了。

    2. 编写gulpfile.js,gulp就那么些api,我们常用到的可能就那些插件,所以我们完全可以编写一个gulpfile.js然后在此基础上修改一下就行了。

gulp安装及使用流程的更多相关文章

  1. Gulp安装流程、使用方法及cmd常用命令导览

    Gulp安装流程.使用方法及CMD常用命令导览 来自前端小白的gulp及周边知识学习总结 一.名词介绍: Npm--node包管理工具 一开始我不理解,包管理工具是什么鬼.后来用到的gulp也好,gu ...

  2. windows下Gulp安装

    目录: 1.安装nodejs2.使用命令行3.npm介绍4.选装cnpm5.全局安装gulp6.新建package.json文件7.本地安装gulp插件8.新建gulpfile.js文件9.运行gul ...

  3. windows下Gulp入门详细教程 &&gulp安装失败的原因(红色)

    以下教程亲自实践可行: 另外添加一个Gulp自动编译.压缩.更新.测试的教程链接:https://markpop.github.io/2014/09/17/Gulp%E5%85%A5%E9%97%A8 ...

  4. gulp安装和使用简介

    一. gulp和grunt对比 grunt目前的工作流程:读文件.修改文件.写文件——读文件.修改文件.写文件——... gulp目前的工作流程:读取文件——修改文件——修改文件...——写文件 二. ...

  5. Yeoman+Bower+gulp web前端自动化工作流程(初级教程)

    Yeoman包括了三个部分yo(脚手架工具).grunt/gulp(构建工具).bower(包管理器).听说gulp更容易上手,所以我就没用grunt而选的gulp 什么是开发流程? 在我看来一个完整 ...

  6. Gulp安装及配合组件构建前端开发一体化

    原文:http://www.dbpoo.com/getting-started-with-gulp/ 所有功能前提需要安装nodejs(本人安装版本v0.10.26)和ruby(本人安装版本1.9.3 ...

  7. Gulp安装使用教程

    题记:为什么要使用gulp,网上有很多关于gulp的优势,而在我看来,这些都是工具的优势!工具的优势最主要体现在易用性上,听说gulp比grunt更易用,所以这里写个文档记录. 同样要保证nodejs ...

  8. HISAT2+StringTie+Ballgown安装及使用流程

    HISAT2+StringTie+Ballgown安装及使用流程 2015年Nature Methods上面发表了一款快速比对工具hisat,作为接替tophat和bowtie的比对工具,它具有更快的 ...

  9. 最新phpstudy2016安装教程及流程

    最新phpstudy2016安装教程及流程,帮助站长快速搭建网站服务器平台! phpstudy软件简介 该程序包集成最新的Apache+Nginx+LightTPD+PHP+MySQL+phpMyAd ...

随机推荐

  1. 链接选项-rpath的一个问题记录

    问题简述 大概是这么一个情况,有一个过去已经写好的程序,这个程序用于处理网络通信,接收一些操作指令.具体的指令操作通过运行时加载动态库的形式进行扩展.(类似于net-snmp二次开发的一种形式) 问题 ...

  2. iOS 一些常见问题的整理

    一.通知 对于通知,大家想必都不陌生,它是一个单例,允许当事件发生时通知一些对象,让我们在低程度耦合的情况下,来达到通信的目的. 通知的优势:1.不需要编写太多代码,实现比较简单2.对于一个发出的通知 ...

  3. adb命令使用总结

    1.启动/停止 启动 adb server 命令: adb start-server (一般无需手动执行此命令,在运行 adb 命令时若发现 adb server 没有启动会自动调起.) 停止 adb ...

  4. T-Pot平台cowrie蜜罐暴力破解探测及实现自动化邮件告警

    前言:Cowrie是基于kippo更改的中交互ssh蜜罐, 可以对暴力攻击账号密码等记录,并提供伪造的文件系统环境记录黑客操作行为, 并保存通过wget/curl下载的文件以及通过SFTP.SCP上传 ...

  5. fiddler4 使用教程

    Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据,Fiddler包含了一个强大的基于事件脚本的子系统, ...

  6. C++复数运算 重载

    近期整理下很久前写的程序,这里就把它放在博文中了,有些比较简单,但是很有学习价值. 下面就是自己很久前实现的复数重载代码,这里没有考虑特殊情况,像除法中,分母不为零情况. #include <i ...

  7. 【Python】python3.6中实现同一行动态输出

    print同时需要设置flush=True来动态显示 print("\r[{0}] {1} <- {2}".format(username,time,jdTimeFomat) ...

  8. Node入门教程(8)第六章:path 模块详解

    path 模块详解 path 模块提供了一些工具函数,用于处理文件与目录的路径.由于windows和其他系统之间路径不统一,path模块还专门做了相关处理,屏蔽了彼此之间的差异. 可移植操作系统接口( ...

  9. Web - JSONP和同源策略漫谈

    0x00 前言 关于JSONP网上有很多文章了,我也是在拜读了别人的文章的基础上来写写自己的看法,这样可以加深自己印象,巩固一下学习效果.我们需要做的就是站在巨人的肩膀上眺望远方. 0x01 起 在W ...

  10. Fedora Server 21 安装 搜狗拼音输入法

    最新文章:Virson’s Blog 借鉴文章:博客园-怒杀神殿    ChinaUnix-firo 百度贴吧-fedora吧 方法一:解压deb安装包方式安装: 如果本机已安装ibus,需要先卸载, ...