Grunt--Less

摘要:

  之前介绍了自动构建工具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

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

时间: 2024-08-09 20:02:53

Grunt--Less的相关文章

grunt 入门学习

前端工作流,Grunt上手指南 Posted@2013-04-20 7:15 a.m. CategoriesGrunt ,  javascript 我想先花点时间回忆一下作为一个前端需要做的工作(Loading...) JS合并 JS压缩 CSS压缩 CSS Sprite 图片优化 测试 静态资源缓存(版本更新) ... 对应的,一个全副武装的前端可能会是这样的: JSHint CSSLint Jade CoffeeScript RequireJS/SeaJS Compass/Stylus/Le

grunt使用心得

这是我在使用前端构建工具grunt的一些总结,希望对大家有一定的帮助,也希望大家一起讨论一起进步. http://cobish.github.io/%E5%89%8D%E7%AB%AF/2015/06/28/grunt-use.html

Grunt的wiredep任务的配置说明文档

Automatically inject Bower components into the HTML file 自动把Bower的组件注入到HTML文件中 如果我们通过以下方式安装组件 bower install jquery --save bower install sea.js --save 安装后会在bower.json文件中看到 { "name": "framework-demo", "private": true, "dep

grunt之easy demo

首先安装grunt-cli cnpm install -g grunt-cli 接下来创建package.json,内容如下 {        "name": "demo",        "file": "zepto",        "version": "0.1.0",        "description": "demo",       

grunt默认只允许localhost和访问,如何设置外部IP地址访问

使用Yeoman生成器创建web项目,使用grunt server启动,默认访问地址为127.0.0.1:9000或者localhost:9000 如果用本机地址如:192.168.1.100:9000访问默认是访问不到的 想要通过IP地址访问需要修改Gruntfile.js的配置: 修改connect节点配置,原本的配置如下: 可以看到hostname上面有注释,大概意思是:将地址改为'0.0.0.0'可从外部访问. 修改成下图,我们的grunt server就可以从外部访问啦!

【grunt】两小时入门

目录: 1. 用途和场景 2.Grunt插件 3.相关资源 4.环境安装 5.开始学习 5.1 一个新项目 5.2 生成package.json 5.3 在项目中安装grunt和相关插件 5.4 Gruntfile语法 5.4.1 配置任务 5.4.2 加载插件 5.4.3 注册任务 5.5 为我们的项目配置gruntfile.js 5.6 执行任务 6.后续学习 1. 用途和场景 jshint代码检查 代码合并 代码压缩--js/css/html都可以 SASS/LESS编译css watch

Grunt Bower构建前端

Grunt + Bower-前端构建利器 目前比较流行的WEB开发的趋势是前后端分离.前端采用重量级的Javascript框架,比如Angular,Ember等,后端采用restful API的Web Service服务,通过JSON格式进行数据交互. 对于后端服务语言来说,不论是Ruby的rake,Java中的Maven或Gradle,或是Scala中的SBT,他们都能够提供编译运行.运行测试.打包部署.依赖管理等功能.再加上强大的package系统,让它可以插拔式的使用很多强大的功能,像数据

grunt 合并压缩js和css文件(二)

具体node及文件配置请看: grunt 安装使用(一) 要压缩的文件 --src/ ajax.js assets.js touch.js zepto.js 目录结构: dist/ node_modules/ src/ Gruntfile.js package.json package.json是依赖库文件 Gruntfile.js是执行步骤程序 一.js合并压缩 第一次需要先安装grunt.执行 npm install -g grunt-cli 进行安装.如果已经安装,可以忽略. 1.pack

Grunt的初级应用

Grunt是什么呢? Grunt是JavaScript世界的构建工具.为什么要用构建工具?一句话:自动化.对于需要反复重复的任务,例如压缩(minification).编译.单元测试.linting等,自动化工具可以减轻你的劳动,简化你的工作.当你在 Gruntfile 文件正确配置好了任务,任务运行器就会自动帮你或你的小组完成大部分无聊的工作. 为什么要使用Grunt? Grunt生态系统非常庞大,并且一直在增长.由于拥有数量庞大的插件可供选择,因此,你可以利用Grunt自动完成任何事,并且花

Grunt压缩图片

今天我们来说一下用Grunt来压缩图片和JS吧! 首先要安装插件: 这是压缩图片的; npm install --save-dev gulp-imagemin 这是压缩JS的: npm install --save-dev gulp-imagemin 然后引入依赖: var gulp = require("gulp"); 在引入插件: var imagemin = require('gulp-imagemin');//压缩图片 var uglifyJS = require('gulp-