1.一、gulp基本使用还未掌握?请参看: gulp详细入门教程css
1.二、本示例目录结构以下:node
2.一、github:https://github.com/plus3network/gulp-lessgit
2.三、安装:命令提示符执行 cnpm install gulp-less --save-dev
github
2.四、注意:没有安装cnpm请使用 npm install gulp-less --save-dev
什么是cnpm,如何安装?npm
2.五、说明:--save-dev
保存配置信息至 package.json 的 devDependencies 节点。为何要保存至package.json?json
3.一、基本使用gulp
1
2
3
4
5
6
7
8
|
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'));
});
|
3.二、编译多个less文件数组
1
2
3
4
5
6
7
8
|
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
});
|
3.三、匹配符“!”,“*”,“**”,“{}”less
1
2
3
4
5
6
7
8
9
10
|
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'));
});
|
3.四、调用多模块(编译less后压缩css)ui
1
2
3
4
5
6
7
8
9
10
11
|
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.五、当less有各类引入关系时,编译后不容易找到对应less文件,因此须要生成sourcemap文件,方便修改
1
2
3
4
5
6
7
8
9
10
11
12
|
var gulp = require('gulp'),
less = require('gulp-less'),
//确保本地已安装gulp-sourcemaps [cnpm install gulp-sourcemaps --save-dev]
sourcemaps = require('gulp-sourcemaps');
gulp.task('testLess', function () {
gulp.src('src/less/**/*.less')
.pipe(sourcemaps.init())
.pipe(less())
.pipe(sourcemaps.write())
.pipe(gulp.dest('src/css'));
});
|
4.一、命令提示符执行:gulp testLess
5.一、若每修改一次less,就要手动执行任务,显然是不合理的,因此当有less文件发生改变时使其自动编译
1
2
3
4
5
6
7
8
9
10
11
12
|
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任务
});
|
5.二、启动监听事件:命令提示符执行 gulp testWatch
5.三、注意:该命令提示符执行需处于打开状态,关闭后监听事件结束(Ctrl + C 或右上)
6.一、当编译less时出现语法错误或者其余异常,会终止watch事件,一般须要查看命令提示符窗口才能知道,这并非咱们所但愿的,因此咱们须要处理出现异常并不终止watch事件(gulp-plumber),并提示咱们出现了错误(gulp-notify)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
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']);
});
|