gulp    自动化构建工具,实时监控、代码合并、压缩...

   http://www.gulpjs.com.cn/     中文网

   http://gulpjs.com/plugins/     英文网 ,插件      

本文假设你之前没有用过任何任务脚本(task runner)和命令行工具,一步步教你上手Gulp。不要怕,它其实很简单,我会分为五步向你介绍gulp并帮助你完成一些惊人的事情。那就直接开始吧。

第一步:安装Node

首先,最基本也最重要的是,我们需要搭建node环境。访问 http://nodejs.org ,然后点击大大的绿色的 install 按钮,下载完成后直接运行程序,就一切准备就绪。 npm会随着安装包一起安装,稍后会用到它。

第二步:使用命令行

也许现在你还不是很了解什么是命令行——OSX中的终端(Terminal),windows中的命令提示符(Command Prompt),但很快你就会知道。它看起来没那么简单,但一旦掌握了它的窍门,就可以很方便的执行很多命令行程序,比如Sass,Yeoman和Git等,这些都是非常有用的工具。

如果你很熟悉命令行,直接跳到步骤四。

为了确保Node已经正确安装,我们执行几个简单的命令。

node -v

回车(Enter),如果正确安装的话,你会看到所安装的Node的版本号,接下来看看npm。

npm -v

这同样能得到npm的版本号。

如果这两行命令没有得到返回,可能node就没有安装正确,尝试重启下命令行工具,如果还不行的话,只能回到第一步进行重装。

第三步:定位到项目

找到你的文件夹打开它,按住shift+鼠标右键 ,选择“在此处打开命令窗口”,当然也可以是命令cd  定位文件夹

第四步:安装gulp

我们已经知道如何使用命令行,现在尝试点新的东西,认识npm然后安装gulp。

NPM是基于命令行的node包管理工具,它可以将node的程序模块安装到项目中,在它的 官网 中可以查看和搜索所有可用的程序模块。

sudo npm install -g gulp   // 等同于 npm install --global gulp
  1. sudo是以管理员身份执行命令,一般会要求输入电脑密码,可以省略sudo
  2. npm是安装node模块的工具,执行install命令

  3. -g表示在全局环境安装,以便任何项目都能使用它

  4. 最后,gulp是将要安装的node模块的名字

运行时注意查看命令行有没有错误信息,安装完成后,你可以使用下面的命令查看gulp的版本号以确保gulp已经被正确安装。

gulp -v

接下来,我们需要将gulp安装到项目本地

npm install —-save-dev gulp

这里,我们使用 —-save-dev 来更新package.json文件,更新 devDependencies值,以表明项目需要依赖gulp。

Dependencies 可以向其他参与项目的人指明项目在开发环境和生产环境中的node模块依懒关系,想要更加深入的了解它可以看看 package.json文档 。

第五步:新建Gulpfile文件,运行gulp

安装好gulp后我们需要告诉它要为我们执行哪些任务,首先,我们自己需要弄清楚项目需要哪些任务。

  • 检查Javascript
  • 编译Sass(或Less之类的)文件
  • 合并Javascript
  • 压缩并重命名合并后的Javascript

安装依赖

 npm init       一路enter ,会在当前目录生成一个package.json文件夹(模块的配置文件)

npm install gulp-jshint gulp-sass gulp-concat gulp-uglify gulp-rename --save-dev

1 提醒下,如果以上命令提示权限错误,需要添加 sudo 再次尝试。

--save-dev  :你安装的包会出现在你开发(dev)的依赖(Dependencies)里

  因为gulp只是我们开发阶段所依赖的东西,并不是我们项目所用的功能性的东西,所以放在开发的依赖项里面

新建gulpfile文件

现在,组件都安装完毕,我们需要新建gulpfile文件以指定gulp需要为我们完成什么任务。

  gulp.task(name,fn)      - 定义任务,第一个参数是任务名,第二个参数是任务内容。

   gulp.src(path)      - 选择文件,传入参数是文件路径。

    pipe()                        - 管道,你可以暂时将 pipe 理解为将操作加入执行队列

  gulp.dest(path)           - 输出文件

gulp只有五个方法: task , run , watch , src ,和 dest ,在项目根目录新建一个js文件并命名为 gulpfile.js (必须是这个名字),把下面的代码粘贴进去:

gulpfile.js

// 引入 gulp
var gulp = require('gulp'); // 引入组件
var jshint = require('gulp-jshint'); // js检查
var sass = require('gulp-sass');    // sass自动化
var concat = require('gulp-concat');  //文件合并
var uglify = require('gulp-uglify');  //js混淆
var rename = require('gulp-rename');  //重命名 // 检查脚本
gulp.task('lint', function() {
gulp.src('./js/*.js')
.pipe(jshint())
.pipe(jshint.reporter('default'));
}); // 编译Sass
gulp.task('sass', function() {
gulp.src('./scss/*.scss')
.pipe(sass())
.pipe(gulp.dest('./css'));
}); // 合并,压缩文件
gulp.task('scripts', function() {
gulp.src('./js/*.js') //文件路径
.pipe(concat('all.js'))   //合并文件 赋予新名字
.pipe(gulp.dest('./dist'))  //输出
.pipe(rename('all.min.js')) //重命名
.pipe(uglify())        //js 压缩
.pipe(gulp.dest('./dist')); //输出
}); // 默认任务
gulp.task('default', function(){
gulp.run('lint', 'sass', 'scripts'); // 监听文件变化
gulp.watch('./js/*.js', function(){
gulp.run('lint', 'sass', 'scripts');
});
});
//最后的 监听还可以更简单的写
 gulp.task('default',function(){
  
  gulp.watch('
./js/*.js',['lint']);
   
gulp.watch('./scss/*.scss',['sass']);
    
gulp.watch('./js/*.js',['script']);
});
//如果不监听
  
  gulp.task('default',['lint','sass','script'])

现在,分段解释下这段代码。

引入组件

var gulp = require('gulp'); 

var jshint = require('gulp-jshint'); //js 代码检查,gulp-jslint 也可以
var sass = require('gulp-sass');   //sass 自动编译
var less = require('gulp-less'); //less 自动编译
var minifyCss = require('gulp-minify-css'); //css压缩
var concat = require('gulp-concat'); // 代码合并
var uglify = require('gulp-uglify'); // js 混淆 、压缩
var rename = require('gulp-rename'); // 重命名

这一步,我们引入了核心的gulp和其他依赖组件,接下来,分开创建lint, sass, scripts 和 default这四个不同的任务。

Lint任务

gulp.task('lint', function() {
gulp.src('./js/*.js')
.pipe(jshint())
.pipe(jshint.reporter('default'));
});

Link任务会检查 js/ 目录下得js文件有没有报错或警告。

Sass任务

gulp.task('sass', function() {
gulp.src('./scss/*.scss')
.pipe(sass())
.pipe(gulp.dest('./css'));
});

Sass任务会编译 scss/ 目录下的scss文件,并把编译完成的css文件保存到 /css目录中。

Scripts 任务

gulp.task('scripts', function() {
gulp.src('./js/*.js')
.pipe(concat('all.js'))
.pipe(gulp.dest('./dist'))
.pipe(rename('all.min.js'))
.pipe(uglify())
.pipe(gulp.dest('./dist'));
}); 注意:当遇到js 压缩出错,uglify.js ,使用下面方法
  .pipe(uglify().on('error',function(e){
    console.log(e)
  }))


合并后的文件 第544行有问题

scripts任务会合并 js/ 目录下得所有得js文件并输出到 dist/ 目录,然后gulp会重命名、压缩合并的文件,也输出到 dist/ 目录。

default任务

gulp.task('default', function(){
gulp.run('lint', 'sass', 'scripts');
gulp.watch('./js/*.js', function(){
gulp.run('lint', 'sass', 'scripts');
});
});

这时,我们创建了一个基于其他任务的default任务。使用 .run() 方法关联和运行我们上面定义的任务,使用 .watch() 方法去监听指定目录的文件变化,当有文件变化时,会运行回调定义的其他任务。

现在,回到命令行,可以直接运行gulp任务了。

gulp自动化构建工具的更多相关文章

  1. gulp自动化构建工具的使用

    gulp自动化构建工具: 把前端开发常见的处理(“搬砖”)程序,通过一个工具模块管理起来,只需配置一次,达到自动处理目的,简化开发,提高效率!! 安装: 1.全局安装(全局安装一个gulp命令) A. ...

  2. Gulp(自动化构建工具 )

    前言 Gulp,简而言之,就是前端自动化开发工具,利用它,我们可以提高开发效率. 比如: 1.  压缩js 2.  压缩css 3.  压缩less 4.  压缩图片 等等… 我们完全可以利用Gulp ...

  3. gulp自动化构建工具安装使用(1)

    我用的是windows,所以以下操作针对于windows用户,其他系统有不一样的地方请自行查阅资料更正. 好了,废话少说,反正也就是随手捣腾.下雨了,天晴了,我们开始搞gulp了 安装:gulp是个构 ...

  4. gulp自动化构建工具使用总结

    简介: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成:使用她,我们不仅可以很愉快的编写代码 ...

  5. Gulp自动化构建工具的简单使用

    相关网站 gulp官方网址:http://gulpjs.com gulp中文网站:http://www.gulpjs.com.cn/ gulp插件地址:http://gulpjs.com/plugin ...

  6. gulp自动化构建工具使用

    gulpfile.js: var gulp = require("gulp"); var imagemin = require("gulp-imagemin") ...

  7. 前端自动化构建工具gulp的使用总结

    前端自动化构建工具gulp的使用总结 博主最近偶的空闲,在此对gulp的使用做一个总结,让小伙伴知道如何合理的使用gulp以及gulp的使用技巧. 谈到gulp,有人可能就会想到另外一个构建工具gru ...

  8. gulp前端自动化构建工具使用

    (1)新建项目目录gulp_web (2)项目目录下建目录src里面存放需要进行gulp处理的文件目录及文件 (3)gulpfile.js文件内容为声明需要打包应用的gulp组件及打包文件路径和打包任 ...

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

    前端开发自动化工作流工具,JavaScript自动化构建工具grunt.gulp.webpack介绍 前端自动化,这样的一个名词听起来非常的有吸引力,向往力.当今时代,前端工程师需要维护的代码变得及为 ...

随机推荐

  1. Tomcat7安装配置 for Ubuntu

    一.环境说明: 操作系统:Ubuntu 12.04.2 LTS Tomcat:apache-tomcat-7.0.52 二.下载 下载地址:http://tomcat.apache.org/ 这里下载 ...

  2. Where product development should start

    We all need to know our customers in order to create products they’ll actually buy. This is why the  ...

  3. 信号量sem

    一.什么是信号量 为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码的临界区域.临界区域是指执行数据更 ...

  4. 最小生成树 prime poj1258

    题意:给你一个矩阵M[i][j]表示i到j的距离 求最小生成树 思路:裸最小生成树 prime就可以了 最小生成树专题 AC代码: #include "iostream" #inc ...

  5. Webform 上传图片加水印

    界面: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx ...

  6. pythonchallenge 解谜 Level 1

    得到第一关地址后可以进行第一关的解析了. 看起来好神秘的样子.但是也就是把字母 k 变成 m , o 变成 q ,e 变成 g.将字母对应的ASCII的值+2就行了. #-*- coding:utf- ...

  7. Django models知识小点

    django 为使用一种新的方式,即关系对象映射(ORM) 一,创建表 1,基本结构 注意: 1,创建标的时候,如果我们不给表加自增列,生成表的时候会默认给我们生成一列为ID的自增列,当然我们也可以自 ...

  8. PHP基础知识之常量

    定义: define("FOO",     "something");

  9. 在.NET中使用反射实现简易插件机制

    本篇是我学习反射的一个应用小场景而做的学习笔记,主要是一个小的总结,并对各个步骤的记录,以便将来回顾. 一.基础框架-敏捷基础版本 这里假定我们要开发一个记事本,选择Windows Form技术开发, ...

  10. Net作业调度(一) -Quartz.Net入门

    背景 很多时候,项目需要在不同时刻,执行一个或很多个不同的作业. Windows执行计划这时并不能很好的满足需求了,迫切需要一个更为强大,方便管理,集群部署的作业调度框架. 介绍 Quartz一个开源 ...