前端构建 Less入门(CSS预处理器)(5)

到这里我想大家已经对Less有一定程度的了解,并希望在将其加入你的开发工具包中。但通过less.js将Less解析器引入到浏览器肯定是不适合开发的,而cli工具lessc更适合开发环境中使用。在使用之前我们先要通过npm来安装less。

npm install -g less
然后我们就可以通过 lessc [option option=parameter ...] <source> [destination] 的命令格式来调用lessc了!

lessc的option选项较多,我将主要的选项分为lessc命令信息相关、sourcemap相关、@import指令相关和插件相关四类。

1. lessc命令信息相关

lessc -h ,获取lessc命令的帮助信息;

lessc -v ,获取lessc命令的版本号。

2. sourcemap相关

由于在浏览器直接查看和操作的是CSS样式规则,而我们开发时使用的Less代码,这会导致难以找到CSS样式规则所对应的Less代码从而增大调试难度。而sourcemap就是为了解决这一痛点而提出的技术解决方案,其原理就是通过一个map文件来保存两个文件中代码的对应关系,然后支持sourcemap的浏览器的devTools中就会根据这些对应关系来定位相应的Less代码。(Chrome和FF均支持sourcemap,IE11及以下均不支持)

若对sourcemap不太了解的可以参考《前端构建:Source Maps详解》

--source-map ,生成与生成的css同名的sourcemap文件(例如生成的css文件为main.css,那么sourcemap文件就是main.css.map),且与css文件位于同一目录下;

--source-map=<sourcemap文件路径> ,自定义sourcemap文件的路径;

--source-map-rootpath=<sourcemap文件中sources属性值的路径前缀> ,假如main.less文件位于src/less下,而生成的css和sourcemap文件位于bin/style下,那么就需要修改sourcemap文件中用于指向less文件路径的sources属性值,浏览器才能通过sourcemap文件查找到less文件。上述例子的命令为:

lessc --source-map --source-map-rootpath=../../src/less/main.less src/less/main.less bin/style/main.css

--source-map-map-inline ,以data URI Scheme的形式将sourcemap文件内容内嵌到css文件中。

--source-map-url=<css文件中指向sourcemap文件的url> ,默认情况下css文件的最后一行会插入如 /*# sourceMappingURL=main.css.map */ 的内容来指向sourcemap文件,而该选项则可修改sourceMappingURL的值。

3. @import指令相关

--include-path=<path>[;<path>]* ,通过@import指令引入外部less或css等文件时存在引入的文件路径到底是以哪个目录作为参考的问题,我们可以通过该选项来指定参考目录,当存在多个参考目录时,使用;号分隔。

--relative-urls 或 -ru ,用于保持样式库中的图片等资源的相对路径。示例:

# main.less @import "files/backgrounds.less"; # files/backgrounds.less .icon-1 { background-image: url('images/lamp-post.png'); }

不使用该选项时:

.icon-1 { background-image: url('images/lamp-post.png'); }

使用该选项时:

.icon-1 { background-image: url('files/images/lamp-post.png'); }

4. 插件相关

lessc以插件的形式来增强其功能,下面仅介绍clean-css插件,其他插件请参考#plugins-list-of-less-plugins

clean-css插件用于压缩css文件(less-plugin-clean-css@github)

首先通过npm安装插件 npm install -g less-plugin-clean-css ,然后通过--clean-css选项来启动CSS压缩功能。

  如: lessc file.less --clean-css="--s1 --advanced --compatibility=ie8"

八、实战一下                          

先假定我们开发环境的目录结构如下(灰色表示文件由构建工具生成):

sample

|-- build.bat     构建工具

|-- lib              第三方依赖库

|     |-- less     

|            |-- base.less 

|            |-- img

|                  |-- nav.png

|-- src              源码

|     |-- less

|     |      |-- main.less

|     |-- index.html

|-- bin              编译后的文件

|     |-- style

|             |-- main.css

|             |-- main.css.map

|     |-- index.html

|-- dist              发布文件

    |-- lib

    |  |-- less

    |          |-- img

    |                |-- nav.png

    |-- app

      |-- style

      |   |--main.css

      |-- index.html

index.html文件内容:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwwxjp.html