All Projects → ecomfe → node-lesslint

ecomfe / node-lesslint

Licence: other
Less lint

Programming Languages

javascript
184084 projects - #8 most used programming language
CSS
56736 projects

Lesslint

lesslint npm version Coverage Status Dependency Status devDependency Status

Lesslint 是一个基于 NodeJS 以及 EDP 的一个 lint 工具,使用它可以 lint 你的 less code,目前的 lint 规则是基于 ecomfe 的Less编码规范 [1.0]

经过了一段时间的重构,终于来到这个全新的版本。在这个版本中,less 解析器切换成 postcss 以及一个 less 的解析插件。这个版本里,改变了实现方式,没有依赖 Less 本身的 parser 以及 visitor 来进行解析,因此性能较以前的版本有比较大的提升。(这是个重构版本,因此并未对功能上做扩充,下个版本会对功能上做一些扩充,尽请期待~)

具体的配置参见 config

已经实现的 lint 规则:

  • @import 检验:@import 语句引用的文件必须(MUST)写在一对引号内,.less 后缀不得(MUST NOT)省略(与引入 CSS 文件时的路径格式一致)。引号使用 ' 和 " 均可,但在同一项目内必须(MUST)统一。import

  • 颜色检验:颜色定义必须(MUST)使用 #RRGGBB 格式定义,并在可能时尽量(SHOULD)缩写为 #RGB 形式,且避免直接使用颜色名称与 rgb() 表达式。hex-color, shorthand

  • 注释检验:单行注释尽量使用 // 方式。single-comment

  • 数值检验:对于处于 (0, 1) 范围内的数值,小数点前的 0 可以(MAY)省略,同一项目中必须(MUST)保持一致。leading-zero

  • 选择器检验:当多个选择器共享一个声明块时,每个选择器声明必须(MUST)独占一行。require-newline

  • 变量检验:变量命名必须(MUST)采用 @foo-bar 形式,不得(MUST NOT)使用 @fooBar 形式。variable-name

  • 0 值检验:属性值为 0 时,必须省略可省的单位(长度单位如 px、em,不包括时间、角度等如 s、deg)。zero-unit

  • 运算:+ / - / * / / 四个运算符两侧必须(MUST)保留一个空格。+ / - 两侧的操作数必须(MUST)有相同的单位,如果其中一个是变量,另一个数值必须(MUST)书写单位。require-around-space, operate-unit

  • 属性、变量:选择器和 { 之间必须(MUST)保留一个空格。require-before-space

  • 缩进:必须(MUST)采用 4 个空格为一次缩进, 不得(MUST NOT)采用 TAB 作为缩进。block-indent

  • 属性、变量:属性名后的冒号(:)与属性值之间必须(MUST)保留一个空格,冒号前不得(MUST NOT)保留空格;定义变量时冒号(:)与变量值之间必须(MUST)保留一个空格,冒号前不得(MUST NOT)保留空格。require-after-space

安装与更新

lesslint 已发布到 npm 上,可通过如下命令安装。-g是必选项。

$ [sudo] npm install lesslint -g

升级 lesslint 请用如下命令。

$ [sudo] npm update lesslint -g

使用

lesslint 目前就一条命令,后面带 -v 参数,会显示版本信息;后面带目录或者文件名就会对目录或文件执行 lesslint。

$ lesslint -v   // 显示版本信息
$ lesslint [filePath|dirPath]   // 对 file 或 dir 执行 lesslint

TODO

  1. 覆盖更多的规则,现在还未实现的规则如下:

    disallow-mixin-name-space, vendor-prefixes-sort, extend-must-firstline

CHANGELOG

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].