Less.js 选项
包含路径(Include Paths)
lessc --include-path=PATH1;PATH2 | { paths: ['PATH1', 'PATH2'] } |
如果 @import
规则中的文件不存在于该位置,Less 将在传递给此选项的位置上查找它。例如,你可以使用此选项指定对库的路径,你希望在 Less 文件中简单地相对引用它。
根路径(Rootpath)
lessc -rp=resources/ lessc --rootpath=resources/ | { rootpath: 'resources/' } |
允许你为生成的每个导入和 css 中的 url 添加路径。这不会影响处理的 Less 导入语句,只会影响输出 css 中留下的导入语句。
例如,如果 css 使用的所有图像都在名为 resources
的文件夹中,你可以使用此选项将其添加到 URL 中,然后使该文件夹的名称可配置。
Rewrite URLs
lessc -ru=off lessc --rewrite-urls=off | { rewriteUrls: 'off' } |
lessc -ru=all lessc --rewrite-urls=all | { rewriteUrls: 'all' } |
lessc -ru=local lessc --rewrite-urls=local | { rewriteUrls: 'local' } |
默认情况下,URL 保持不变(off
),因此,如果你在子目录中导入引用图像的文件,则 css 中将输出完全相同的 URL。此选项允许你重写导入文件中的 URL,以便 URL 始终相对于传递给 Less 的基本文件。例如:
/* main.less */
@import "global/fonts.less";
/* global/fonts.less */
@font-face {
font-family: "MyFont";
src: url("myfont/myfont.woff2") format("woff2");
}
如果未设置任何内容或设置为 rewriteUrls: 'off'
,则编译 main.less
将输出:
/* main.less */
/* global/fonts.less */
@font-face {
font-family: "MyFont";
src: url("myfont/myfont.woff2") format("woff2");
}
如果设置为 rewriteUrls: 'all'
,则将输出:
/* main.less */
/* global/fonts.less */
@font-face {
font-family: "MyFont";
src: url("./global/myfont/myfont.woff2") format("woff2");
}
使用 rewriteUrls: 'local'
,它只会重写显式相对的 URL(以 .
开头的 URL):
url('./myfont/myfont.woff2') /* 变成 */ url('./global/myfont/myfont.woff2')
url('myfont/myfont.woff2') /* 保持不变 */ url('myfont/myfont.woff2')
这在将 Less 与 CSS Modules 结合使用时非常有用,因为它们使用类似 Node.js 的解析语义。
你还可以考虑使用 data-uri 函数而不是此选项,它将图像嵌入到 CSS 中。
Math
发布于 v3.7.0
lessc -m=[option] lessc --math=[option] | { math: '[option]' } |
Less 重新构建了 Math 选项,以提供介于以前的 strictMath
设置(需要始终使用括号)和默认设置之间的功能,后者在所有情况下执行 Math 运算。
为了减少与 CSS 的冲突,CSS 现在在值之间自由使用 /
符号,因此现在有一个 Math 模式,仅需要在除法时使用括号。 (这是 Less 4 中的默认设置。)"Strict math" 也已经进行了微调,以更直观地操作,尽管支持旧的行为。
math
可用的四个选项是:
always
(3.x 默认值)- Less 急切地进行 Math 运算parens-division
(4.0 默认值) - 不使用/
运算符在括号外执行除法(但可以使用./
运算符在括号外“强制”执行除法 -./
已弃用)parens
|strict
- 所有 Math 表达式都需要括号。strict-legacy
(在 4.0 中已删除)- 在某些情况下,如果表达式的任何部分无法计算,则不会计算 Math。
always 示例:
.math {
a: 1 + 1;
b: 2px / 2;
c: 2px ./ 2;
d: (2px / 2);
}
输出:
.math {
a: 2;
b: 1px;
c: 1px;
d: 1px;
}
parens-division
示例:
.math {
a: 1 + 1;
b: 2px / 2;
c: 2px ./ 2;
d: (2px / 2);
}
输出:
.math {
a: 2;
b: 2px / 2;
c: 1px;
d: 1px;
}
strict
.math {
a: 1 + 1;
b: 2px / 2;
c: (2px / 2) + (3px / 1);
}
输出:
.math {
a: 1 + 1;
b: 2px / 2;
c: 1px + 3px;
}
strict-legacy
在旧的 strictMath
模式下,括号外的混合表达式意味着整个括号都需要计算。
这些代码不会被计算(可能不是你想要的)。
.math {
a: 1 + 1;
b: 2px / 2;
c: (2px / 2) + (3px / 1);
}
输出:
.math {
a: 1 + 1;
b: 2px / 2;
c: (2px / 2) + (3px / 1);
}
Strict Math 计算(已弃用)
已被 math
选项取代。
相对 URL(已弃用)
lessc -ru lessc --relative-urls | { relativeUrls: true } |
已被 rewriteUrls: "all"
取代。
Strict Units
lessc -su=on lessc --strict-units=on | { strictUnits: true } |
默认为 off/false。
如果没有这个选项,Less 会在进行 Math 计算时尝试猜测输出 Units。例如:
.class {
property: 1px * 2px;
}
在这种情况下,显然不对——长度乘以长度得到的是面积,但 CSS 不支持指定面积。因此我们假设用户��望其中一个值是一个值,而不是长度 Units,我们输出 2px
。
开启 Strict Units 时,我们假设这是计算中的错误,并抛出一个错误。
IE8 兼容性(已弃用)
lessc --ie-compat | { ieCompat: true } |
从 v3.0.0 开始默认为假。目前仅用于 data-uri
函数,以确保不会创建对浏览器处理过大的图像。
启用内联 JavaScript(已弃用)
lessc --js | { javascriptEnabled: true } |
从 v3.0.0 开始默认为假。启用在 .less
文件中内联 JavaScript 的计算。这为一些开发人员带来了安全问题,他们没有预料到样式表的用户输入会有可执行代码。
已被 @plugin
选项取代。
全局变量
lessc --global-var="color1=red" | { globalVars: { color1: 'red' } } |
此选项定义了一个可以被文件引用的变量。实际上,声明被放在了你的基础 Less 文件的顶部,这意味着它可以被使用,但如果该变量在文件中被定义,它也可以被覆盖。
修改变量
lessc --modify-var="color1=red" | { modifyVars: { color1: 'red' } } |
与全局变量选项相反,这将声明放在你的基础文件的末尾,这意味着它将覆盖在你的 Less 文件中定义的任何内容。
URL 参数
lessc --url-args="cache726357" | { urlArgs: 'cache726357' } |
此选项允许你指定要添加到每个 URL 上的参数。例如,这可以用于缓存破坏。
行号(已弃用)
lessc --line-numbers=comments lessc --line-numbers=mediaquery lessc --line-numbers=all | { dumpLineNumbers: 'comments' } |
生成内联源映射。这是浏览器开始支持源映射之前的唯一选项。
预加载插件
请参见:预加载插件
Lint
lessc --lint -l | { lint: true } |
运行 less 解析器,仅报告错误而不输出任何内容。
压缩(已弃用)
lessc --compress -x | { compress: true } |
使用 less 内置压缩进行压缩。这做得还可以,但没有利用专用 css 压缩的所有技巧。一般来说,我们建议在将 Less 转换为 CSS 后查看清理和压缩 CSS 的第三方工具。
允许从不安全的 HTTPS 主机导入
lessc --insecure | { insecure: true } |
源映射(Source Map)
这些选项大多不适用于在浏览器中使用 Less.js,因为你应该在预编译的 Less 文件中生成源映射。
生成源映射
lessc --source-map | { sourceMap: {} } |
告诉 less 生成一个源映射。
源映射输出文件名
lessc --source-map=file.map | { sourceMap: { outputFilename: 'file.map' } } |
源映射根路径
lessc --source-map-rootpath=dev-files/ | { sourceMap: { sourceMapRootpath: 'dev-files/' } } |
指定应该添加到源映射中每个 less 文件路径前面的根路径,以及指定在输出的 css 中指定的映射文件路径的根路径。
因为基本路径默认为输入 less 文件的目录,根路径默认为从源映射输出文件到输入 less 文件的基本目录的路径。
如果你在 Web 服务器的根目录中生成了一个 css 文件,但是你的源 less/css/map 文件在不同的文件夹中,请使用此选项。因此,对于上面的选项,你可能会有
output.css
dev-files/output.map
dev-files/main.less
源映射基本路径
lessc --source-map-basepath=less-files/ | { sourceMap: { sourceMapBasepath: 'less-files/' } } |
这与 rootpath 选项相反,它指定应从输出路径中删除的路径。例如,如果你正在 less-files 目录中编译文件,但源文件将在你的 Web 服务器的根目录或当前目录中可用,则可以指定此选项以删除路径的额外 less-files 部分。
它默认为输入 less 文件的路径。
在源映射中包含 Less 源代码
lessc --source-map-include-source | { sourceMap: { outputSourceFiles: true } } |
此选项指定我们应该在源映射中包含 Less 源代码。
将所有的 Less 文件编译到源映射中。这意味着你只需要使用映射文件即可访问原始源代码。
这可以与 map inline 选项一起使用,这样你就不需要任何额外的外部文件。
Source Map Map Inline
lessc --source-map-inline | { sourceMap: { sourceMapFileInline: true } } |
此选项指定映射文件应内联在输出 CSS 中。这不建议用于生产,但对于开发,它允许编译器生成单个输出文件,在支持它的浏览器中,使用编译后的 CSS,但显示你的非编译的 Less 源代码。
Source Map URL
lessc --source-map-url=/my-map.json | { sourceMap: { sourceMapURL: '/my-map.json' } } |
允许你覆盖指向映射文件的 CSS 中的 URL。这适用于当 rootpath 和 basepath 选项未完全满足你的需求时。