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

<html> <head> <title></title> <link type="text/css" href="https://www.jb51.net/style/main.css" /> </head> <body> <div> </div> </body> </html>

样式库base.less文件内容:

.base-nav{ height: 50px; background-image: url(img/nav.png); } .base-debug{ border: solid 5px red; }

main.less文件内容:

@import (reference) "base.less"; @env:release; //编译模式:release或debug /* 导航栏 */ .nav:extend(.base-nav){ // 编译模式为debug时采用该样式 & when (@env=debug){ .base-debug(); } }

我们一般将工程代码级别的产出分为源码、可执行代码 和可发布代码 三种,而可执行代码和可发布代码的构建需求是不同的,因此构建方式也有所区别,也就是lessc使用的选项也会不同。下面将针对不同的产出物来介绍lessc的使用。

1. 可执行代码

我将可执行代码部分再细分为release和debug两种编译模式,可以看到通过变量@env来实现不同模式下采用不同的样式规则。默认采用release模式编译源码。

lessc --include-path=lib/less --relative-urls --source-map --source-map-rootpath=../../src/less/main.less src/less/main.less bin/style/main.css
在执行lessc命令时通过选项--modify-var="env=debug"即可以debug模式编译源码。

lessc --include-path=lib/less --relative-urls --source-map --source-map-rootpath=../../src/less/ --modify-var="env=debug" src/less/main.less bin/style/main.css
可以看到上述编译过程中均会生成sourcemap文件以便调试使用。

2. 可发布代码

对于发布的内容我们会对其进行压缩处理

lessc --include-path=lib/less --clean-css="advanced" --relative-urls src/less/main.less dist/app/style/main.css
由于sourcemap文件仅在开发阶段有用,因此生成发布代码时就不要生成了。

完整的构建文件build.bat如下:

@echo off cls goto :%1 :bin echo Building...... ::remove subitems of bin rd /S /Q bin ::copy html files xcopy /y src\*.html bin\ ::compile less to css cmd /C lessc --include-path=lib/less --relative-urls --source-map --source-map-rootpath=../../src/less/main.less src/less/main.less bin/style/main.css echo Building is over! goto :over :debug echo Building...... ::remove subitems of bin rd /S /Q bin ::copy html files xcopy /y src\*.html bin\ ::compile less to css cmd /C lessc --include-path=lib/less --relative-urls --source-map --source-map-rootpath=../../src/less/ --modify-var="env=debug" src/less/main.less bin/style/main.css echo Building is over! goto :over :dist echo Deploying...... ::remove subitems of dist rd /S /Q dist ::copy lib xcopy /y lib\less\img dist\lib\less\img\ ::copy html files xcopy /y src\*.html dist\app\ ::compile less to css cmd /C lessc --include-path=lib/less --clean-css="advanced" --relative-urls src/less/main.less dist/app/style/main.css echo Deploying is over! :over

然后在CMD中输入 build bin  、 build debug  或  build dist  即可构建工程了!

sample@github

九、与Grunt结合

我们沿用第八节的工程目录结构来演示。

首先我们要将npm的package.json添加到工程中,然后安装grunt及其插件(grunt-contrib-less,less-plugin-clean-css,grunt-contrib-clean,grunt-contrib-copy),现在我们的工程结构应该是这样的。

sample-grunt

|-- package.json

|-- Gruntfile.js

|-- node_modules   

|-- 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

其中用于将Less编译为CSS的插件为grunt-contrib-less, 下面我们对应第八章的内容来介绍该插件的选项。

sourcemap相关:

{Boolean} sourceMap,对应lessc中属性值为true/false的--source-map选项;

{String} sourceMapFilename,对应lessc中属性值为String的--source-map选项;

{String} sourceMapRootPath,对应lessc的--source-map-rootpath选项;

{String} sourceMapURL,对应lessc的--source-map-url选项;

{Boolean} outputSourceFiles,,对应lessc的--source-map-map-inline选项;

@import指令相关:

 {Array|String} paths,对应lessc的--include-path选项;

{Boolean} relativeUrls,对应lessc的--relative-urls选项;

插件相关:

  {Array} plugins,数组元素为插件实例。

Gruntfile.js内容如下:

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

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