Grunt--Less

简介: 摘要:   之前介绍了自动构建工具Grunt,其中有一个模块是"grunt-contrib-less",下面是配置Grunt自动编译less文件。 安装:   Grunt是基于node,功能模块化。

摘要:

  之前介绍了自动构建工具Grunt,其中有一个模块是"grunt-contrib-less",下面是配置Grunt自动编译less文件。

安装:

  Grunt是基于node,功能模块化。你可以将grunt-contrib-less配置在package.json中然后npm install就完成安装了,也可以通过下面命令安装

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

注意: grunt-contrib-less是开发依赖包,所以安装到devDependencies中。

配置任务:

 下面是一个简单的例子

less: {
  // 开发环境
  development: {
    options: {
      paths: ["assets/css"]  // @import 加载文件的路径
    },
    files: {
      "path/to/result.css": "path/to/source.less"  // 将path/to/source.less编译为path/to/result.css
    }
  },
  // 线上环境
  production: {
    options: {
      paths: ["assets/css"],  // @import 加载文件的路径
      cleancss: true,     // 压缩css文件
      modifyVars: {   // 重新定义全局变量
        imgPath: '"http://mycdn.com/path/to/images"',
        bgColor: 'red'
      }
    },
    files: {
      "path/to/result.css": "path/to/source.less"
    }
  }
}

 

 

加载模块:

  从node_module中加载less模块,如下:

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

 定义任务

// 开发环境
grunt.registerTask('lessDev', ['less:development']);
// 线上环境
grunt.registerTask('lessPro', ['less:production']);

 执行任务:

  在命令窗口中执行 grunt lessDev或者grunt lessPro。

完整如下:

Gruntfile.js:

module.exports = function (grunt) {
    'use strict';

    grunt.initConfig({
        less: {
          // 开发环境
          development: {
            options: {
              paths: ["assets/css"]  // @import 加载文件的路径
            },
            files: {
              "path/to/result.css": "path/to/source.less"  // 将path/to/source.less编译为path/to/result.css
            }
          },
          // 线上环境
          production: {
            options: {
              paths: ["assets/css"],  // @import 加载文件的路径
              cleancss: true,     // 压缩css文件
              modifyVars: {   // 重新定义全局变量
                imgPath: '"http://mycdn.com/path/to/images"',
                bgColor: 'red'
              }
            },
            files: {
              "path/to/result.css": "path/to/source.less"
            }
          }
        }
    });

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


    // 开发环境
    grunt.registerTask('lessDev', ['less:development']);
    // 线上环境
    grunt.registerTask('lessPro', ['less:production']);
    
};

 

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

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

 

相关文章
|
搜索推荐 云计算
在线教育平台
在线教育平台
1216 3
|
机器学习/深度学习 人工智能 Ubuntu
|
安全 开发工具 C++
Atom编辑器:曾经的效率提升利器,终将被新技术取代
Atom编辑器:曾经的效率提升利器,终将被新技术取代
421 0
|
监控 安全 搜索推荐
SCUM 管理员工具:提升效率与优化体验的利器
在数字化时代,SCUM 游戏的管理工具为游戏运营和玩家体验带来了新变革。本文介绍了该工具的概述、意义、应用场景及未来趋势,展望了智能化、多元化、个性化和开放化的发展方向。
|
Web App开发 Rust JavaScript
分享2020年Github星级前20名JavaScript框架性能比较
之前有在《读 2020 年 Javascript 趋势报告展望 ES2020》介绍了主流的前端库,本文就来看看JavaScript框架之间的终极性能之战
1032 0
|
Kubernetes Linux KVM
KVM虚拟机管理工作二(虚拟机磁盘优化,Centos进入dracut模式,报 /dev/centos/swap does not exist,如何恢复)
KVM虚拟机管理工作二(虚拟机磁盘优化,Centos进入dracut模式,报 /dev/centos/swap does not exist,如何恢复)
925 0
KVM虚拟机管理工作二(虚拟机磁盘优化,Centos进入dracut模式,报 /dev/centos/swap does not exist,如何恢复)
|
编解码
win10笔记本外接显示器后,微信界面字体模糊问题的解决方案
win10笔记本外接显示器后,微信界面字体模糊问题的解决方案
2272 0
win10笔记本外接显示器后,微信界面字体模糊问题的解决方案
|
小程序
关于Taro 中的事件冒泡的坑
在小程序中 天生有catchTap事件可以阻断事件冒泡 所以可以 <view catchTap="clickHandler"></view> 复制代码 来阻止事件传播 在taro中 官方推荐使用e.stopPropagation()阻断事件冒泡 但是在小程序中 e.stopPropagation() 是一个空函数
关于Taro 中的事件冒泡的坑
|
消息中间件 网络性能优化 API
RabbitMQ 如何对消费端限流?
RabbitMQ 如何对消费端限流?
499 0
RabbitMQ 如何对消费端限流?
|
存储 NoSQL 关系型数据库
图数据库 - 概述
# 背景 关系型数据库自上世纪80年代以来一直都是数据库领域发展的主力,随着社交、物联网、金融、电商等领域的快速发展,由此产生的数据规模和数据间的关系复杂度呈现指数级的增长,而传统的关系型数据库在处理复杂关系的数据上表现很差,这是因为关系型数据库是通过外键索引来实现多表之间的关系引用的,查询实体之间的关系需要JOIN操作,而JOIN操作通常非常耗时,因此我们需要一种新的数据组织和查询方式,帮助我们
1056 0
图数据库 - 概述
下一篇
oss云网关配置