• gulp&gulp-less


    使用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、完.

  • 相关阅读:
    批量新增百万条数据 十百万条数据
    sqlserver 组内排序
    EF ++属性会更新实体
    Entity Framework Core: A second operation started on this context before a previous operation completed
    abp Cannot access a disposed object. A common cause of this error is disposing
    abp xunit Can not register IHostingEnvironment. It should be a non-abstract class. If not, it should be registered before.”
    hangfire enqueued but not processing(hangfire 定时任务入队列但不执行)
    EF 更新实体 The instance of entity type 'BabyEvent' cannot be tracked because another instance
    datatable to entiy list 不支持可空类型和枚举类型
    webapi 设置不显示接口到swaggerUI
  • 原文地址:https://www.cnblogs.com/91allan/p/4913816.html
Copyright © 2020-2023  润新知