使用gulp-less插件将less文件编译成css,当有less文件发生改变自动编译less,并保证less语法错误或出现异常时能正常工作并提示错误信息。

1、本地安装gulp-less

github:https://github.com/plus3network/gulp-less

安装:命令提示符执行 cnpm install gulp-less --save-dev

没有安装cnpm请使用 npm install gulp-less --save-dev 什么是cnpm,如何安装?

--save-dev 保存配置信息至 package.json 的 devDependencies 节点。为什么要保存至package.json?

2、配置gulpfile.js

2.1、基本使用

var gulp = require('gulp'),
less = require('gulp-less'); gulp.task('testLess', function () {
gulp.src('src/less/index.less')
.pipe(less())
.pipe(gulp.dest('src/css'));
});

2.2、编译多个less文件

var gulp = require('gulp'),
less = require('gulp-less'); gulp.task('testLess', function () {
gulp.src(['src/less/index.less','src/less/detail.less']) //多个文件以数组形式传入
.pipe(less())
.pipe(gulp.dest('src/css')); //将会在src/css下生成index.css以及detail.css
});

2.3、匹配符“!”,“*”,“**”,“{}”

var gulp = require('gulp'),
less = require('gulp-less'); gulp.task('testLess', function () {
//编译src目录下的所有less文件
//除了reset.less和test.less(**匹配src/less的0个或多个子文件夹)
gulp.src(['src/less/*.less', '!src/less/**/{reset,test}.less'])
.pipe(less())
.pipe(gulp.dest('src/css'));
});

2.4、调用多模块(编译less后压缩css)

var gulp = require('gulp'),
less = require('gulp-less'),
//确保本地已安装gulp-minify-css [cnpm install gulp-minify-css --save-dev]
cssmin = require('gulp-minify-css'); gulp.task('testLess', function () {
gulp.src('src/less/index.less')
.pipe(less())
.pipe(cssmin()) //兼容IE7及以下需设置compatibility属性 .pipe(cssmin({compatibility: 'ie7'}))
.pipe(gulp.dest('src/css'));
});

3、执行任务

3.1、命令提示符执行:gulp testLess

4、监听事件(自动编译less)

4.1、若每修改一次less,就要手动执行任务,显然是不合理的,所以当有less文件发生改变时使其自动编译

var gulp = require('gulp'),
less = require('gulp-less'); gulp.task('testLess', function () {
gulp.src(['src/less/*.less','!src/less/extend/{reset,test}.less'])
.pipe(less())
.pipe(gulp.dest('src/css'));
}); gulp.task('testWatch', function () {
gulp.watch('src/**/*.less', ['testLess']); //当所有less文件发生改变时,调用testLess任务
});

4.2、启动监听事件:命令提示符执行 gulp testWatch

4.3、注意:该命令提示符执行需处于打开状态,关闭后监听事件结束

5、异常处理

5.1、当编译less时出现语法错误或者其他异常,会终止watch事件,通常需要查看命令提示符窗口才能知道,这并不是我们所希望的,所以我们需要处理出现异常并不终止watch事件(gulp-plumber),并提示我们出现了错误(gulp-notify)。

var gulp = require('gulp'),
less = require('gulp-less');
//当发生异常时提示错误 确保本地安装gulp-notify和gulp-plumber
notify = require('gulp-notify'),
plumber = require('gulp-plumber'); gulp.task('testLess', function () {
gulp.src('src/less/*.less')
.pipe(plumber({errorHandler: notify.onError('Error: <%= error.message %>')}))
.pipe(less())
.pipe(gulp.dest('src/css'));
});
gulp.task('testWatch', function () {
gulp.watch('src/**/*.less', ['testLess']);
});

6、完.

gulp&gulp-less的更多相关文章

  1. [gulp] gulp lint 忽略文件

    how does the ignore parameter works in gulp and nodemon? 参考了 前端构建工具gulp入门教程,里面的lint我不需要检查所有js下面的文件,因 ...

  2. 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一)

    相关连接导航 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一) 执行 $Gulp 时发生了什么 —— 基于 Gulp 的前端集成解决方案(二) 常用 Gulp 插件汇总 ...

  3. 执行 $Gulp 时发生了什么 —— 基于 Gulp 的前端集成解决方案(二)

    前言 文章 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一) 中,已经完成对 gulp 的安装,由于是window环境,文中特意提到了可以通过安装 gitbash 来代替 ...

  4. 前端自动化构建工具gulp记录

    一.安装 1)安装nodejs 通过nodejs的npm安装gulp,插件也可以通过npm安装.windows系统是个.msi工具,只要一直下一步即可,软件会自动在写入环境变量中,这样就能在cmd命令 ...

  5. 前端构建大法 Gulp 系列 (二):为什么选择gulp

    系列目录 前端构建大法 Gulp 系列 (一):为什么需要前端构建 前端构建大法 Gulp 系列 (二):为什么选择gulp 前端构建大法 Gulp 系列 (三):gulp的4个API 让你成为gul ...

  6. Gulp 入门

    1. 安装 Node 环境 参考 http://www.cnblogs.com/zichi/p/4627728.html,注意一起安装 npm 工具,并把路径保存到环境变量中(安装过程中会有提醒) 安 ...

  7. (转)gulp使用

    前端构建工具gulpjs的使用介绍及技巧 gulpjs是一个前端构建工具,与gruntjs相比,gulpjs无需写一大堆繁杂的配置参数,API也非常简单,学习起来很容易,而且gulpjs使用的是nod ...

  8. Gulp基础

    1.什么是gulp? gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器. 2.为什么使用gulp? gulp不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工 ...

  9. gulp整理

    gulp基于node 1.全局安装gulp: $ npm install --global gulp 2.前往项目目录,然后安装作为项目的开发依赖(devDependencies): $ npm in ...

  10. gulp学习-gulpfile

    安装gulp 假设已经安装了node 和npm (淘宝的cnpm很适合国内使用). 1.首页全局安装gulp. 1 npm install --global gulp 2.其次局部安装gulp.(注: ...

随机推荐

  1. NeHe OpenGL教程 第三十五课:播放AVI

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  2. C# WinForm开发系列 - ListBox/ListView/Panel

    转自会飞的小猪文章 C# WinForm开发系列 - ListBox/ListView/Panel 在博客园看到了一篇博文,觉得很不错,就转载过来了.    包含自定义绘制的ListBox, 带拖动, ...

  3. spring配置定时器的时间设置

    时间大小由小到大排列,从秒开始,顺序为 秒,分,时,天,月,年    *为任意 ?为无限制. 具体如下: "0/10 * * * * ?" 每10秒触发 "0 0 12 ...

  4. 配置webstorm使用supervisor时出现 /usr/bin/env: node: 没有那个文件或目录 解决方法

    配置好supervisor路径后 出现了 启动时出现了 /usr/bin/env: node: 没有那个文件或目录 需要讲.nvm下的node链接到, /usr/bin/目录下 sudo ln -s ...

  5. dede上怎么让所有链接在新窗口打开

    网页的头部,添加:<base target="_blank"> <base target="_blank"> </head> ...

  6. html——SVG

    SVG 指可伸缩矢量图形 (Scalable Vector Graphics) SVG 用于定义用于网络的基于矢量的图形 SVG 使用 XML 格式定义图形 SVG 图像在放大或改变尺寸的情况下其图形 ...

  7. 内省—beanutils工具包

    Apache组织开发了一套用于操作JavaBean的API,这套API考虑到了很多实际开发中的应用场景,因此在实际开发中很多程序员使用这套API操作JavaBean,以简化程序代码的编写. BeanU ...

  8. 加链接太麻烦?使用 linkit 模块提升用户编辑体验

    在制作网站内容时,适当地添加链接会非常用利于网站内容的SEO.加入链接的文章可以让访客了解到更多相关内容,从而提升文章的质量.被链接到的内容也能因此获得更多的访问和关注.只不过,在内容编辑时添加链接却 ...

  9. 正则表达式2——grep命令

    grep是Global search Regular Expression and Print out the line的简称. 1. grep命令基本用法 命令格式: grep [选项][模式][文 ...

  10. 使用JAR命令打EAR包

    恩,我又得了一个发布应用的活,常常使用JAR命令来打EAR包,所以下面记录一下,以免忘记! 前提条件如下: 1)我的WEB服务器是WebLogic Server (版本是: 10.3.6.0) 2)假 ...