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. MySQL数据切分的相关概念和原理详解

    对于数据切分,我们可能还不是很熟悉,但是它对于MySQL数据库来说也是相当重要的一门技术,本文我们就详细介绍一下MySQL数据库的数据切分的相关知识,接下来就让我们一起来了解一下这部分内容. 什么是数 ...

  2. Swift Guard 守护

    前言 guard 语句和 if 语句有点类似,都是根据其关键字之后的表达式的布尔值决定下一步执行什么. guard 语句只会有一个代码块,不像 if 语句可以 if else 多个代码块. guard ...

  3. 各类nosql db的功能与性能对比

    mongodb cassandra neo4j couchbase couchdb redis leveldb

  4. 远程桌面中Tab键不能补全的解决办法

    我们曾在之前的一篇文章中介绍了windows远程连接ubuntu的方法,在成功登陆远程桌面环境之后,发现在终端中Tab键不能自动补齐(但是Ctrl +Tab 可以用,但是需要按下组合键才能补全的话,时 ...

  5. C++复数运算 重载

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

  6. IIS发布的网站常见的问题汇总

    1.安装.NET4.0时缺少WIC导致不能装上.NET4.0,下载安装后即可,下载地址如下,根据系统版本选择对应软件 32位版:https://www.microsoft.com/zh-cn/down ...

  7. IOS开发之Core Location

    IOS 支持三种检测当前位置的方式:手机基站.Wi-Fi.和GPS,其中GPS是经度最高的,同时也是最耗费手机电量的.一般情况下在室内是无法通过GPS获 取位置信息的,通过Wi-Fi获取位置的原理是通 ...

  8. Linux 常用命令随笔(二)

    Linux 常用命令随笔(二) 1.RPM RPM是RedHat Package Manager(RedHat软件包管理工具) 1.1.安装软件包 rpm -ivh ***.rpm 其中i表示安装,v ...

  9. 法线从object space到eye space的转换((normal matrix)

    对于顶点来说,从object Space转换到eye space, 使用model-view矩阵就好了.那么顶点的法线是否也可以直接使用model-view矩阵转化? 通常情况下是不行的. 如下两张图 ...

  10. opencv_java import org.opencv.highgui.Highgui,类中无imread方法

    opencv_java import org.opencv.highgui.Highgui,提示错误 2018年01月19日 14:50:25 小码农的路程 阅读数:358   原因:1.OpenCV ...