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

所有功能前提需要安装nodejs(本人安装版本v0.10.26)和ruby(本人安装版本1.9.3p484)。

Gulp 是一款基于任务的设计模式的自动化工具,通过插件的配合解决全套前端解决方案,如静态页面压缩、图片压缩、JS合并、SASS同步编译并压缩CSS、服务器控制客户端同步刷新。

Gulp安装

全局安装Gulpjs

npm install -g gulp  #全局安装

局部安装Gulpjs

npm install gulp --save-dev # 局部安装

全局安装
1. 将安装包放在 /usr/local 下
2. 可以直接在命令行里使用

本地安装
1. 将安装包放在 ./node_modules 下(运行npm时所在的目录)
2. 可以通过 require() 来引入本地安装的包

选择Gulp组件

前端项目需要的功能:
1、图片(压缩图片支持jpg、png、gif)
2、样式 (支持sass 同时支持合并、压缩、重命名)
3、javascript (检查、合并、压缩、重命名)
4、html (压缩)
5、客户端同步刷新显示修改
6、构建项目前清除发布环境下的文件(保持发布环境的清洁)

通过gulp plugins,寻找对于的gulp组件
gulp-imagemin: 压缩图片
gulp-ruby-sass: 支持sass
gulp-minify-css: 压缩css
gulp-jshint: 检查js
gulp-uglify: 压缩js
gulp-concat: 合并文件
gulp-rename: 重命名文件
gulp-htmlmin: 压缩html
gulp-clean: 清空文件夹
gulp-livereload: 服务器控制客户端同步刷新(需配合chrome插件LiveReloadtiny-lr

安装Gulp组件

安装组件项目目录,通过cd project 进入目录,执行下边的npm安装组件。

npm
install gulp-util gulp-imagemin gulp-ruby-sass gulp-minify-css
gulp-jshint gulp-uglify gulp-rename gulp-concat gulp-clean
gulp-livereload tiny-lr --save-dev

项目目录结构

project(项目名称)
|–.git 通过git管理项目会生成这个文件夹
|–node_modules 组件目录
|–dist 发布环境
    |–css 样式文件(style.css style.min.css)
    |–images 图片文件(压缩图片)
    |–js js文件(main.js main.min.js)
    |–index.html 静态文件(压缩html)
|–src 生产环境
    |–sass sass文件
    |–images 图片文件
    |–js js文件
    |–index.html 静态文件
|–.jshintrc jshint配置文件
|–gulpfile.js gulp任务文件

gulp基础语法

gulp通过gulpfile文件来完成相关任务,因此项目中必须包含gulpfile.js

gulp有五个方法:src、dest、task、run、watch
src和dest:指定源文件和处理后文件的路径
watch:用来监听文件的变化
task:指定任务
run:执行任务

编写gulp任务

/**
 * 组件安装
 * npm install gulp-util gulp-imagemin gulp-ruby-sass gulp-minify-css gulp-jshint gulp-uglify gulp-rename gulp-concat gulp-clean gulp-livereload tiny-lr --save-dev
 */

// 引入 gulp及组件
var gulp    = require(‘gulp‘),                 //基础库
    imagemin = require(‘gulp-imagemin‘),       //图片压缩
    sass = require(‘gulp-ruby-sass‘),          //sass
    minifycss = require(‘gulp-minify-css‘),    //css压缩
    jshint = require(‘gulp-jshint‘),           //js检查
    uglify  = require(‘gulp-uglify‘),          //js压缩
    rename = require(‘gulp-rename‘),           //重命名
    concat  = require(‘gulp-concat‘),          //合并文件
    clean = require(‘gulp-clean‘),             //清空文件夹
    tinylr = require(‘tiny-lr‘),               //livereload
    server = tinylr(),
    port = 35729,
    livereload = require(‘gulp-livereload‘);   //livereload

// HTML处理
gulp.task(‘html‘, function() {
    var htmlSrc = ‘./src/*.html‘,
        htmlDst = ‘./dist/‘;

    gulp.src(htmlSrc)
        .pipe(livereload(server))
        .pipe(gulp.dest(htmlDst))
});

// 样式处理
gulp.task(‘css‘, function () {
    var cssSrc = ‘./src/scss/*.scss‘,
        cssDst = ‘./dist/css‘;

    gulp.src(cssSrc)
        .pipe(sass({ style: ‘expanded‘}))
        .pipe(gulp.dest(cssDst))
        .pipe(rename({ suffix: ‘.min‘ }))
        .pipe(minifycss())
        .pipe(livereload(server))
        .pipe(gulp.dest(cssDst));
});

// 图片处理
gulp.task(‘images‘, function(){
    var imgSrc = ‘./src/images/**/*‘,
        imgDst = ‘./dist/images‘;
    gulp.src(imgSrc)
        .pipe(imagemin())
        .pipe(livereload(server))
        .pipe(gulp.dest(imgDst));
})

// js处理
gulp.task(‘js‘, function () {
    var jsSrc = ‘./src/js/*.js‘,
        jsDst =‘./dist/js‘;

    gulp.src(jsSrc)
        .pipe(jshint(‘.jshintrc‘))
        .pipe(jshint.reporter(‘default‘))
        .pipe(concat(‘main.js‘))
        .pipe(gulp.dest(jsDst))
        .pipe(rename({ suffix: ‘.min‘ }))
        .pipe(uglify())
        .pipe(livereload(server))
        .pipe(gulp.dest(jsDst));
});

// 清空图片、样式、js
gulp.task(‘clean‘, function() {
    gulp.src([‘./dist/css‘, ‘./dist/js‘, ‘./dist/images‘], {read: false})
        .pipe(clean());
});

// 默认任务 清空图片、样式、js并重建 运行语句 gulp
gulp.task(‘default‘, [‘clean‘], function(){
    gulp.start(‘html‘,‘css‘,‘images‘,‘js‘);
});

// 监听任务 运行语句 gulp watch
gulp.task(‘watch‘,function(){

    server.listen(port, function(err){
        if (err) {
            return console.log(err);
        }

        // 监听html
        gulp.watch(‘./src/*.html‘, function(event){
            gulp.run(‘html‘);
        })

        // 监听css
        gulp.watch(‘./src/scss/*.scss‘, function(){
            gulp.run(‘css‘);
        });

        // 监听images
        gulp.watch(‘./src/images/**/*‘, function(){
            gulp.run(‘images‘);
        });

        // 监听js
        gulp.watch(‘./src/js/*.js‘, function(){
            gulp.run(‘js‘);
        });

    });
});

LiveReload配置

1、安装Chrome LiveReload
2、通过npm安装http-server,快速建立http服务

npm install http-server -g

3、通过cd找到发布环境目录dist
4、运行http-server,默认端口是8080
5、访问路径localhost:8080
6、再打开一个cmd,通过cd找到项目路径执行gulp,清空发布环境并初始化
7、执行监控 gulp
8、点击chrome上的LiveReload插件,空心变成实心即关联上,你可以修改css、js、html即时会显示到页面中。

视频教材youtube(需要FQ):http://www.youtube.com/watch?v=OKVE6wE9CW4

项目git

配置好的项目已经放到github上。
下载地址:https://github.com/dbpoo/gulp
git clone地址:[email protected]:dbpoo/gulp.git

转载:http://www.dbpoo.com/getting-started-with-gulp/

时间: 2024-08-02 09:01:04

Gulp安装及配合组件构建前端开发一体化的相关文章

Gulp安装及配合组件构建前端开发一体化(转)

Gulp安装及配合组件构建前端开发一体化 所有功能前提需要安装nodejs(本人安装版本v0.10.26)和ruby(本人安装版本1.9.3p484). Gulp 是一款基于任务的设计模式的自动化工具,通过插件的配合解决全套前端解决方案,如静态页面压缩.图片压缩.JS合并.SASS同步编译并压缩CSS.服务器控制客户端同步刷新. Gulp安装 全局安装Gulpjs npm install -g gulp  #全局安装 局部安装Gulpjs npm install gulp --save-dev

Vue.js-组件化前端开发新思路

Vue.js-组件化前端开发新思路 12017.04.14 18:31:25字数 6228阅读 5632 本文章是我最近在公司的一场内部分享的内容.我有个习惯就是每次分享都会先将要分享的内容写成文章.所以这个文集也是用来放这些文章的,顺便也当图床用. 1. 认识Vue.js Vue.js(读音 /vju?/,类似于view)是一套构建用户界面的渐进式框架. 如果你有react或者Angular开发经验,你肯定不会对Vue.js感到太过陌生.Vue.js是踩在Angular和React肩膀上的后来

前端开发自动化工作流工具:JavaScript自动化构建工具grunt、gulp、webpack介绍

前端开发自动化工作流工具,JavaScript自动化构建工具grunt.gulp.webpack介绍 前端自动化,这样的一个名词听起来非常的有吸引力,向往力.当今时代,前端工程师需要维护的代码变得及为庞大和复杂,代码维护.打包.发布等流程也变得极为繁琐,同时浪费的时间和精力也越来越多,当然人为的错误也随着流程的增加而增加了更多的出错率.致使每一个团队都希望有一种工具,能帮助整个团队在开发中能精简流程.提高效率.减少错误率.随之讨论自动化部署也越来越多,并且国内很多大型团队也都有自己成熟的自动化部

Gulp构建前端自动化工作流之:常用插件介绍及使用

在对Gulp有了一个初步的了解之后,我们开始构建一个较为完整的Gulp开发环境. 本文主要分为6个段落: 1. 构建项目目录结构(Directory Structure Build) 2. 插件介绍及使用方法(Tasks and dependencies) 3. 扩展优化(Extend & Optimize Task) 4. 其他插件介绍(Other plug-ins) 5. 匹配规则(Match Files) 6. 注意事项(Attention) 关于Gulp的入门介绍及安装方法,可先去 <

Gulp.js----比Grunt更易用的前端构建工具

Grunt一直是前端构建工具,然而他也不是毫无缺陷的,gulp的作者 Eric Schoffstall 在他介绍 gulp.js 的 presentation 中总结了 Grunt 的几点不足之处: 插件很难遵守单一职责.因为 Grunt 的 API 设计缺憾,使得许多插件不得不负责一些和其主要任务无关的事情.比如说要对处理后的文件进行更名操作,你可能使用的是 uglify 插件,也有可能使用的是 concat 插件(取决于工作流的最后一个环节是谁). 用插件做一些本来不需要插件来做的事情.因为

用gulp替代fekit构建前端项目

https://segmentfault.com/a/1190000003060016 离开qunar有一个多月了,在离开的时候就决定不再用fekit.做出这个决定并不是因为fekit不好,恰恰相反,fekit帮我们做了很多事情,还屏蔽了许多细节,让开发人员能够专注于开发过程.不过随着fekit的升级,也出现了一些问题,同时fekit和公司业务及发布流程有一定耦合,所以觉得采用开源的构建方案. 在使用gulp的过程中,基本也是依据使用fekit的思路来逐步完善构建过程的,所以还是要感谢fekit

如何构建一只专业的前端开发团队(一)

如何构建一支专业的前端开发团队(一) 49八卦 2016-08-01 08:15:04 本文简单明了的告诉你如何建设专业前端队伍,更多是软性的东西.本文已获得小爝授权转载,原文地址可访问:https://zhuanlan.zhihu.com/p/21779628 有点标题党了,因为我确实不是从零开始,而是从一个五人小队打造了一支目前37人的前端技术团队. 很久了,一直想写这么一篇文章,但是因为种种原因没有写的出来,一个原因是我一直觉得这不是我自己一个人的力量可以完成的,二来我觉得没有做出什么成绩

前端开发构建:13 种热门工具的选型参考

前言 在前端项目的规模和复杂性不断提升的情况下,各类构建思想和相应工具层出不穷.本文竭己所能对比了当下13个构建工具,包括 Browserify. Webpack. Rollup. Grunt. Gulp和 Yeoman6个广为流行的工具, FIS. Athena. WeFlow和 Cooking等4个国产工具,以及三大框架: React, Vue和 Angular的官方脚手架.希望能在项目初期的构建工具选型上为大家提供些参考. 全览 构建工具可以分为三类:模块化打包类.任务流构建类和集合型工具

如何构建自动化的前端开发流程

我们先来看下前端开发可能存在的问题: 我们有许多的第三方库的依赖需要管理: 我们有独立的前端测试需要自动运行: 我们还有很多代码需要在发布时进行打包压缩: ?? 所以构建一个自动化的前端开发流程是非常必要的,但现在前端开发流程的构建是百花齐放,没有一个统一的标准,还有很多依赖于后端的架构来做前端开发管理.例如在Rails开发中,就有各种前端库的gem包.但是这种依赖于后端框架的管理方式有许多问题: 许多gem包的维护者并不是前端库的维护者,所以更新不一定即时: 不利于前端代码与后端代码做分离: