sass-lint是否忽略某一行?

时间:2016-02-01 17:00:37

标签: sass gulp

我正在使用Gulp使用 sass -lint。如何从lint控制台输出中禁用我sass中特定样式的警告?

我发现了一个类似的问题,但我使用 sass -lint,而不是 scss -lint: Having scss-lint ignore a particular line

这是我正在使用的那个:https://www.npmjs.com/package/gulp-sass-lint

我尝试了一些基于 scss -lint项目的变体:

Ü

为了清楚起见,我想在我的SASS中禁用特定样式的警告,而不是全局。触发警告的事情是故意的,我会使用它。例如,我可能会设置多个背景样式,因此一个可以作为旧版浏览器的后备。但目前这是触发无重复属性警告。

4 个答案:

答案 0 :(得分:81)

通过评论禁用

根据{{​​3}}

2016年12月更新,现在可以使用以下语法:

  

为整个文件禁用多个规则

// sass-lint:disable border-zero, quotes

p {
  border: none; // No lint reported
  content: "hello"; // No lint reported
}
     

禁用单行规则

p {
  border: none; // sass-lint:disable-line border-zero
}
     

禁用块内的所有lint(以及所有包含的块)

p {
  // sass-lint:disable-block border-zero
  border: none; // No result reported
}

新信息由评论者@IanRoutledge提供。

但是,之前的 ,如果您想要禁用某些规则,但仅针对特定代码块和/或代码段。 就我而言the docs tell,使用sass-lint 是不可能的。我也试过了一些其他的搜索,并且总体上略读了代码库,但没有发现你正在寻找的功能存在的暗示。

为了进行比较, from the underlying source code清楚地显示 在那里实现,其方式似乎在您正在使用的lib中没有类似的解决方案。

通过yml配置禁用

可以一般地禁用规则。您需要有一个.sass-lint.yml文件来禁用警告。

假设你有gulpfile.js

'use strict';

var gulp = require('gulp'),
    sassLint = require('gulp-sass-lint');

gulp.task('default', [], function() {
  gulp.src('sass/*.scss')
    .pipe(sassLint())
    .pipe(sassLint.format())
    .pipe(sassLint.failOnError());
});

这是package.json

{
  "devDependencies": {
    "gulp": "^3.9.0",
    "gulp-sass": "^2.1.1",
    "gulp-sass-lint": "^1.1.1"
  }
}

在此styles.scss文件上运行:

div { dsply: block; }

你得到这个输出:

[23:53:33] Using gulpfile D:\experiments\myfolder\gulpfile.js
[23:53:33] Starting 'default'...
[23:53:33] Finished 'default' after 8.84 ms

sass\styles.scss
  1:7   warning  Property `dsply` appears to be spelled incorrectly  no-misspelled-properties
  1:21  warning  Files must end with a new line                      final-newline

??? 2 problems (0 errors, 2 warnings)

现在,如果您在gulpfile旁边添加一个.sass-lint.yml文件,请使用以下内容:

rules:
  no-misspelled-properties: 0

你会看到:

[23:54:56] Using gulpfile D:\experiments\myfolder\gulpfile.js
[23:54:56] Starting 'default'...
[23:54:56] Finished 'default' after 9.32 ms

sass\styles.scss
  1:21  warning  Files must end with a new line  final-newline

??? 1 problem (0 errors, 1 warning)

其中一个警告现在被忽略了。

this query for the scss-lint source code指向The sass-lint readme.md的链接,其中包含更多示例。

答案 1 :(得分:10)

从sass-lint 1.10.0开始,可以通过源评论禁用sass-lint规则

以下是对此的不同排列,故意与之前的scss-lint方式几乎完全相同。

禁用整个文件的规则

// sass-lint:disable border-zero
p {
  border: none; // No lint reported
}

禁用多个规则

// sass-lint:disable border-zero, quotes
p {
  border: none; // No lint reported
  content: "hello"; // No lint reported
}

禁用单行

的规则
p {
  border: none; // sass-lint:disable-line border-zero
}

禁用块内的所有lint(以及所有包含的块)

p {
  // sass-lint:disable-block border-zero
  border: none; // No result reported
}

a {
  border: none; // Failing result reported
}

禁用并再次启用

// sass-lint:disable border-zero
p {
  border: none; // No result reported
}
// sass-lint:enable border-zero

a {
  border: none; // Failing result reported
}

禁用/启用所有短接

// sass-lint:disable-all
p {
  border: none; // No result reported
}
// sass-lint:enable-all

a {
  border: none; // Failing result reported
}

sass-lint readme包含所有细节,docs也已更新。

grunt,gulp和atom插件都已更新,要求v1.10及更高版本,以便快速重新安装这些或更新,你就可以开始了。

我们很抱歉花了这么长时间才出来但是我们不得不在我们确信它们有用之前解决了AST中的一些问题。

答案 2 :(得分:3)

从sass-lint 1.10开始,支持禁用特定行的linting规则。

https://github.com/sasstools/sass-lint#disabling-linters-via-source

到目前为止,sass-lint不支持基于每个文件或每行禁用规则。他们有long-standing GitHub issue跟踪该功能。

答案 3 :(得分:0)

疑难杂症。

首先,这里是sass-lint规则列表:

https://github.com/sasstools/sass-lint/tree/develop/lib/rules

接下来,您可以为所需规则设置选项:

rule:
    severity: 0

0 =没有写任何内容

1 =警告

2 =错误

这是你需要的吗?