搭建Gulp自动构建环境

原文链接:https://zhang35.coding.me/2018-gulp-4-14.html

前言

perl设计者在著作programming perl中提到:

优秀的程序员具有三大美德: 懒惰 急躁 和傲慢 ( laziness,Impatience.and Hubris)。

恩,第一就是懒,我十分认同。重复性工作全都应该交由机器去做。

于是在前端项目中,Gulp这种自动构建工具就应运而生了。

gulp通过定义任务,能完成前端项目的自动预处理、生成、部署等,甚至连刷新浏览器都省了,做到了“所见即所得”。

于是程序员能专注于coding,保存代码即可见到结果。

真是懒到极致了。

什么是Gulp

Gulp是一个自动化工具,前端开发者可以使用它来处理常见任务:

  • 搭建web服务器
  • 文件保存时自动重载浏览器
  • 使用预处理器如Sass、LESS
  • 优化资源,比如压缩CSS、JavaScript、压缩图片
    当然Gulp能做的远不止这些。如果你够疯狂,你甚至可以使用它搭建一个静态页面生成器。Gulp真的足够强大,但你必须学会驾驭它。

安装gulp模块

使用npm安装gulp,以便以后能在终端使用gulp命令:

$ sudo cnpm install gulp -g

tip:安装淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm,提高模块下载速度:

$ npm install -g cnpm --registry=https://registry.npm.taobao.org

创建gulp项目

创建package.json文件:

$ npm init

在 package.json 文件中指定项目依赖的包,以后可使用 npm install 命令一次性下载这些依赖包。
关于package.json详见:https://blog.csdn.net/u011240877/article/details/76582670

局部安装Gulp模块:

$ cnpm install gulp --save-dev

dependencies就是你程序运行需要的模块,没有这个模块你程序就会报错。
devDependencies是开发的时候需要的模块。
举个例子,你用angularjs框架开发一个程序,开发阶段需要用到gulp来构建你的开发和本地运行环境。所以angularjs一定要放到dependencies里,因为以后程序到生产环境也要用。gulp则是你用来压缩代码,打包等需要的工具,程序实际运行的时候并不需要,所以放到dev里就ok了。

创建gulpfile.js

var gulp = require('gulp'); //使用本地gulp模块

//任务模块
gulp.task('hi', function() {
    console.log('hello');
});

命令行执行:$ gulp hello,能看到:

[20:24:28] Starting 'hi'...
hello
[20:24:28] Finished 'hi' after 178 μ

写gulp任务

一般任务长这样:

gulp.task('task-name', function () {
  return gulp.src('source-files') // Get source files with gulp.src
    .pipe(aGulpPlugin()) // Sends it through a gulp plugin
    .pipe(gulp.dest('destination')) // Outputs the file in the destination folder
})

src输入源文件,pipe到插件处理后,输出到dest。

监视文件变动

监视文件变动代码如下:

gulp.watch('files-to-watch', ['tasks', 'to', 'run']);

或者使用通配符:

gulp.watch('app/scss/**/*.scss', ['sass']);

或者使用任务同时监听多组文件:

gulp.task('watch', function(){
  gulp.watch('app/scss/**/*.scss', ['sass']);
  // Other watchers
})

使用livereload插件自动刷新浏览器

以监视html文件为例,一旦有变动,自动生成并刷新浏览器。

本地安装gulp-livereload

cnpm install gulp-livereload --save-dev

添加gulp任务

var gulp = require('gulp'),
    livereload = require('gulp-livereload');
 
gulp.task('watch', function() {
    livereload.listen();
    gulp.watch('src/html/*.html', function(event){
        livereload.changed(event.path);
    });
});

安装浏览器插件

安装chrome的livereload插件,可下载crx文件直接拖入浏览器安装。

以服务器方式打开页面

加载本地html文件无法触发livereload,必须以服务器方式加载。

这里使用node的超轻量级web服务器http-server。

安装http-server:cnpm install http-server -g

在html所在文件夹执行:$ http-server

此时便能在http://localhost:8080/访问到页面。

运行livereload

1、执行gulp任务:$ gulp watch

2、点击Chrome地址栏右边livereload按钮变成实心圈,即为启用。

此时修改文件,浏览器即可自动刷新。

参考文章

https://www.cnblogs.com/Tom-yi/p/8036730.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,607评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,239评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,960评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,750评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,764评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,604评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,347评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,253评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,702评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,893评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,015评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,734评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,352评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,934评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,052评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,216评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,969评论 2 355

推荐阅读更多精彩内容

  • 在现在的前端开发中,前后端分离、模块化开发、版本控制、文件合并与压缩、mock数据等等一些原本后端的思想开始...
    Charlot阅读 5,443评论 1 32
  • gulpjs是一个前端构建工具,与gruntjs相比,gulpjs无需写一大堆繁杂的配置参数,API也非常简单,学...
    依依玖玥阅读 3,154评论 7 55
  • 什么是GULP? GULP 是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器;她不仅能 对...
    碧玉含香阅读 660评论 0 0
  • 我的新作观点网http://www.guandn.com(观点网是一个猎获新奇、收获知识、重在独立思考的网站),它...
    pizCat阅读 2,452评论 1 18
  • 好久不见小姨了,周末的时候约小姨夫妻俩来家里吃个饭。一是叙旧,二是找个借口让小姨休息。每次看到小姨我都会无限感慨,...
    向行阅读 525评论 5 15