zoukankan      html  css  js  c++  java
  • Grunt学习笔记【7】---- grunt-contrib-less插件详解

    本文主要讲如何使用Grunt实现less文件压缩。

    一 说明

    less是非常常用的样式框架之一,Grunt也提供了可以编译和打包less样式文件的插件:grunt-contrib-less。

    实现原理分析:

    分析该插件源码,可以发现该插件实际只做了对样式文件的各种处理,真正进行编译less文件到css文件,实际还是调用的less库的less.render方法实现的。

    如下是grunt-contrib-less库源码:

    二 安装

    npm install grunt-contrib-less --save-dev

    三 加载任务

    grunt.loadNpmTasks('grunt-contrib-less');

    四 配置

    该插件配置吧比较简单,下边只列出作者用到的几个常用属性:

    4.1 files

    设置要处理的less文件地址和输出的css文件地址。

    1 files: {
    2    'dist/build.css': 'theme/build.less'
    3 }

    4.2 options

    其它各种配置都在options中,具体属性如下:

    paths:

      类型: String Array Function

      默认值: 根目录.

      意义:定义@import加载文件的路径。默认值是文件的当前路径。 如果指定一个函数的源文件路径将是第一个参数。您可以返回到使用字符串或路径的数组。

    rootpath:

      类型:String

      默认值:“”

      意义:所有文件都是基于这个路径

    compress:

      类型:bool

      默认值:false

      意义:压缩编译之后的css文件,即删除css文件中的空行和空格

    cleancss:

      类型: bool

      默认值: false

      意义: 使用clean-css来压缩css文件

    cleancssOptions:

      类型: Object

      默认值: none

      意义:如果设置cleancss为true的话,此项才起效果,配置cleancss的选项

    ieCompat:

      类型:bool

      默认值:true

      意义:编译之后的css文件适应于ie8

    optimization:

      类型: Integer

      默认值:null

      意义:设置优化等级,数字越小,在树中创建的节点越少。会影响到调试。

    strictImports:

      类型:bool

      默认值:false

      意义:如果设置为true,less将会以标准的模式来加载@import引用的文件

    strictMath:

      类型:bool

      默认值:false

      意义:如果设置为true,表达式需要用括号括起来

    strictUnits:

      类型:bool

      默认值:false

      意义:如果设置为true,less将会验证单位是否合法

    syncImport:

      类型:bool

      默认值:false

      意义:异步加载通过@import引用的文件

    dumpLineNumbers:

      类型:string(comments, mediaquery,all)

      默认值:false

      意义:

    relativeUrls:

      类型:bool

      默认值:false

      意义:重写url为相对url

    customFunctions:

      类型: Object

      默认值: none

      意义:自定义函数,一般是全局功能的。

    report:

      类型: string ('min', 'gzip')

      默认值:min

      意义:何种方式来压缩文件,gzip更消耗时间

    sourceMap:

      类型:bool

      默认值:false

      意义:是否使用文件映射

    sourceMapFilename:

      类型:string

      默认值:none

      意义:编写源与给定的文件名映射到一个单独的文件。

    sourceMapUrl:

      类型:string

      默认值:none

      意义:重写css文件中的源映射。

    sourceMapBasepath:

      类型:string

      默认值:none

      意义:设置在源映射中的less文件路径的基本路径。

    sourceMapRootpath:

      类型:string

      默认值:none

      意义:在map文件中的less文件根目录

    outputSourceFiles:

      类型:bool

      默认值:false

      意义:将less文件放到Map文件中,替换引用。

    modifyVars:

      类型: Object

      默认值: none

      意义:重写全局变量

    banner:

      类型:string

      默认值: none

      意义:标记,编译之后文件顶部标记

    五 实战

    下边是一个实例项目。

    5.1 整体项目目录:

    5.2 gruntfile.js文件中配置:

     1 module.exports = function(grunt) {
     2     grunt.initConfig({
     3         // 清理空文件夹
     4         clean: {
     5             foo1: {
     6                 src: ['dist/*']
     7             }
     8         },
     9         less: {
    10             css: {
    11                 options: {
    12                     compress: true,
    13                     strictMath: true
    14                 },
    15                 files: {
    16                     'dist/build.css': 'theme/build.less'
    17                 }
    18             }
    19         }
    20 
    21     });
    22 
    23     grunt.loadNpmTasks('grunt-contrib-less');
    24     grunt.loadNpmTasks('grunt-contrib-clean');
    25 
    26     // 默认被执行的任务列表。
    27     grunt.registerTask('default', [
    28         'clean',
    29         'less'
    30     ]);
    31 
    32 };

    5.3 入口文件build.less代码很简单:

    @import "a.less";

    5.4 核心less文件a.less代码如下:

    1 @ 80px;
    2 @color: 'red';
    3 
    4 .a-title {
    5   color: @color;
    6    @width;
    7   height: 100px;
    8   background-color: blueviolet;
    9 }

    5.5 执行grunt命令后输出文件build.css如下(下边是格式化后的):

    1 .a-title {
    2     color: 'red';
    3      80px;
    4     height: 100px;
    5     background-color: blueviolet
    6 }

    六 实战代码下载地址

    上边实战源码获取地址:

    https://gitee.com/bangbangwa/grunt/blob/master/grunt-contrib-less-test.rar

    参考资料&内容来源

    Grunt官网:https://www.npmjs.com/package/grunt-contrib-less

    博客园:https://www.cnblogs.com/xiyangbaixue/p/4132901.html

  • 相关阅读:
    【Unity编程】欧拉角与万向节死锁(图文版)
    关于ListView中getView被重复调用的问题
    svn 错误集锦续
    android 无法生成R文件的原因剖析
    SVN下错误集锦
    视频文件格式
    国内各视频网站android pad客户端支持分辨率情况初步统计
    android 下的网络图片加载
    遇到问题描述:Android Please ensure that adb is correctly located at问题解决
    android 时间控件概述
  • 原文地址:https://www.cnblogs.com/zhaoweikai/p/9722771.html
Copyright © 2011-2022 走看看