# 使用

# 1. 命令行用法

使用命令行将 .less 文件编译为 .css 文件

如果您不喜欢命令行,请了解有关 Less 的 GUI (opens new window) 的更多信息。

# 1.1. 全局安装

npm (opens new window) 安装

# 安装
$ sudo npm install less -g

# 查看版本
$ lessc -v
lessc 3.9.0 (Less Compiler) [JavaScript]

-g 选项安装全局可用的 lessc 命令。

# 1.2. 在 node 的开发环境下安装

或者,如果您不想全局使用编译器,则可能会遇到

npm i less --save-dev

这将在项目文件夹中安装最新的 lessc 正式版,并将其添加到项目的 package.json 中的 devDependencies 字段中。

# 1.3. lessc 的 beta 版本

周期性的,随着新功能的开发,lessc 版本将发布到 npm,标记为 beta。 这些版本不会作为 @latest 官方发行版发布,并且通常会在版本中发布 beta 版(使用 lessc -v 获取当前版本)。

由于补丁版本不会中断,我们将立即发布补丁版本,alpha / beta / candidate 版本将作为次要或主要版本升级发布(我们努力从 1.4.0 开始遵循语义版本控制 (opens new window))。

# 1.4. 服务器端和命令行用法

包含在此存储库中的二进制文件 bin/lessc 可与 Linux、OS X、Windows 上的 Node.js 一起使用。

使用:lessc [option option=parameter ...] <source> [destination]

# 1.4.1. 命令行用法

lessc [option option=parameter ...] <source> [destination]

如果 source 设置为 -(减号),则从 stdin 读取输入。

# 1.4.2. 示例

bootstrap.less 编译为 bootstrap.css

lessc bootstrap.less bootstrap.css

# 1.5. lessc 的选项

对于所有其他选项,请参阅 Less 选项 (opens new window)

# 1.5.1. silent

lessc -s lessc --silent

停止显示任何警告。

# 1.5.2. version

lessc -v
lessc --version

# 1.5.3. help

lessc --help
lessc -h

打印包含可用选项和退出的帮助消息。

# 1.5.4. makefile

lessc -M
lessc --depends

输出生成文件 import 的依赖文件列表。

# 2. 浏览器端用法

在浏览器中使用 Less.js 是最简单的入门方式,便于使用 Less 进行开发,但在生产中,当性能和可靠性很重要时,我们建议使用 Node.js 或许多第三方工具之一进行预编译。

首先,将 .less 样式表与 rel 属性设置为“stylesheet/less”链接:

<link rel="stylesheet/less" type="text/css" href="styles.less" />

接下来,下载 less.js (opens new window) 并将其包含在页面 <head> 元素的 <script></script> 标记中:

<script src="less.js" type="text/javascript"></script>

# 2.1. 设置选项

您可以通过在脚本标记之前在 less 对象上设置选项来以编程方式设置选项 - 这会影响所有初始链接标记和 less 的编程使用。

<script>
  less = {
    env: "development",
    async: false,
    fileAsync: false,
    poll: 1000,
    functions: {},
    dumpLineNumbers: "comments",
    relativeUrls: false,
    rootpath: ":/a.com/"
  };
</script>
<script src="less.js"></script>

另一种方法是在脚本标记上指定选项,例如

<script>
  less = {
    env: "development"
  };
</script>
<script src="less.js" data-env="development"></script>

或者为了简洁起见,可以将它们设置为脚本和链接标记上的属性:

<script src="less.js" data-poll="1000" data-relative-urls="false"></script>
<link data-dump-line-numbers="all" data-global-vars='{ "myvar": "#ddffee", "mystr": "\"quoted\"" }' rel="stylesheet/less" type="text/css" href="less/styles.less">

# 2.2. 浏览器支持

Less.js 支持所有现代浏览器(Chrome、Firefox、Safari、IE11+、Edge)。 虽然在生产中可以在客户端使用 Less,但请注意这样做会对性能产生影响(尽管 Less 的最新版本要快得多)。 此外,如果发生 JavaScript 错误,有时会出现装饰性问题。 这是灵活性与速度的折衷。 为了尽可能提高静态网站的性能,我们建议在服务器端编译 Less。

有理由在生产中使用客户端 Less,例如,如果您想允许用户调整将影响主题的变量,并且您希望实时向他们显示 - 在这种情况下,用户不担心在看到之前等待样式更新。

# 2.3. 提示

  • 确保在脚本之前包含样式表。
  • 链接多个 .less 样式表时,每个样式表都是独立编译的。 因此,您在样式表中定义的任何变量、混合或名称空间都无法访问。

# 3. Less.js 选项

# 3.1. Include Paths

lessc --include-path=PATH1;PATH2

{ paths: ['PATH1', 'PATH2'] }

如果 @import 规则中的文件不存在于该确切位置,则 Less 将在传递给此选项的位置查找该文件。 例如,您可以使用它来指定要在 Less 文件中简单且相对地引用的库的路径。

类似于指定 path 环境变量。

# 3.2. Rootpath

lessc -rp=resources/
lessc --rootpath=resources/

{ rootpath: 'resources/' }

允许您为 css 中的每个生成的 import 和 URL 添加路径。 这不会影响处理的 Less import语句,只会影响输出 css 中的那些语句。

例如,如果 css 使用的所有图像都位于名为 resources 的文件夹中,则可以使用此选项将其添加到 URL 中,然后将该文件夹的名称配置为可配置。

# 3.3. 重写网址

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 的基本文件。 例如。

${root}/
  main.less
  global/
    fonts.less
    myfont/
      myfont.woff2
/* main.less */
@import "global/fonts.less";
/* global/fonts.less */
@font-face {
  font-family: 'MyFont';
  src: url('myfont/myfont.woff2') format('woff2');
  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'),
    url('./myfont/myfont.ttf') format('ttf');
}

设置 rewriteUrls: 'all'main.less 输出为:

/* main.less */

/* global/fonts.less */
@font-face {
  font-family: 'MyFont';
  src:
    url('./global/myfont/myfont.woff2') format('woff2'),
    url('./global/myfont/myfont.ttf') format('ttf');
}

设置 rewriteUrls: 'local'main.less 输出为:

/* main.less */

/* global/fonts.less */
@font-face {
  font-family: 'MyFont';
  src:
    url('myfont/myfont.woff2') format('woff2'),
    url('./global/myfont/myfont.ttf') format('ttf');
}

如果你将 Less 与 CSS 模块 (opens new window) 结合起来使用类似的解析语义(如 Node.js),这可能很有用。

您可能还需要考虑使用 data-uri 函数而不是此选项,它会将图像嵌入到 css 中。

# 3.4. Math

# 3.5. Strict Units

lessc -su=on
lessc --strict-units=on

{ strictUnits: true }

默认为 off / false

如果没有此选项,则在数学运算时尝试猜测输出单位。 例如

.class {
  width: 1px * 2px;
}

在这种情况下,事情显然是不对的 - 长度乘以长度给出一个区域,但 css 不支持指定区域。 因此我们假设用户意味着其中一个值是值,而不是长度单位,我们输出 2px

使用严格的单位,我们假设这是计算中的错误并抛出错误。

# 3.6. Global Variables

lessc --global-var="color1=red"

{ globalVars: { color1: 'red' } }

此选项定义可由文件引用的变量。 声明放在基础 Less 文件的顶部,这意味着可以使用它,但如果在文件中定义了此变量,也可以覆盖它。

# 3.7. Modify Variables

lessc --modify-var="color1=red"

{ modifyVars: { color1: 'red' } }

与全局变量选项相反,这会将声明放在基本文件的末尾,这意味着它将覆盖 Less 文件中定义的任何内容。

# 3.8. URL Arguments

lessc --url-args="cache726357"

{ urlArgs: 'cache726357' }

此选项允许您指定要转到每个 URL 的参数。 例如,这可以用于缓存清除。

# 3.9. Lint

运行 Less 解析器,只报告错误而不输出任何内容。

# 3.10. 允许从不安全的HTTPS主机导入

lessc --insecure

{ insecure: true }

# 3.11. Source Map Options

lessc --source-map

{ sourceMap: {} }

告诉 less 生成 Source Map

本章目录