# gulp-csslint

> CSSLint plugin for gulp

Latest version **1.0.1** (published 2018-02-08) · MIT license · 0 weekly downloads

## Install

```sh
npm install gulp-csslint
pnpm add gulp-csslint
yarn add gulp-csslint
bun add gulp-csslint
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.1 |
| Published | 2018-02-08 |
| First published | 2013-12-10 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=0.10 |
| Dependencies | 6 |
| Unpacked size | 12.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 74 |
| Author | Larry Davis |
| Maintainers | lazd |
| Keywords | csslint, gulpplugin |

## Links

- npm: https://www.npmjs.com/package/gulp-csslint
- Repository: https://github.com/lazd/gulp-csslint
- Homepage: https://github.com/lazd/gulp-csslint#readme
- Issues: https://github.com/lazd/gulp-csslint/issues
- npm.io page: https://npm.io/package/gulp-csslint

## Dependencies (6)

- [vinyl](https://npm.io/package/vinyl.md) ^2.1.0
- [csslint](https://npm.io/package/csslint.md) ^1.0.2
- [rcloader](https://npm.io/package/rcloader.md) ^0.2.1
- [through2](https://npm.io/package/through2.md) ^2.0.1
- [fancy-log](https://npm.io/package/fancy-log.md) ^1.3.2
- [plugin-error](https://npm.io/package/plugin-error.md) ^1.0.1

## Alternatives

- [eslint-plugin-sonarjs](https://npm.io/package/eslint-plugin-sonarjs.md) — 2.9M weekly downloads
- [eslint-config-expo](https://npm.io/package/eslint-config-expo.md) — 1.5M weekly downloads
- [@matter/protocol](https://npm.io/package/@matter/protocol.md) — 63.5K weekly downloads
- [@eventcatalog/linter](https://npm.io/package/@eventcatalog/linter.md) — 24.8K weekly downloads
- [@inrupt/eslint-config-base](https://npm.io/package/@inrupt/eslint-config-base.md) — 4.5K weekly downloads

## Recent versions

- 1.0.1 (latest) — 2018-02-08
- 1.0.0 — 2016-08-20
- 0.3.1 — 2016-06-03
- 0.3.0 — 2016-03-30
- 0.2.2 — 2016-02-28
- 0.2.1 — 2016-02-28
- 0.2.0 — 2015-08-17
- 0.1.5 — 2014-08-02
- 0.1.4 — 2014-04-18
- 0.1.3 — 2014-01-09
- 0.1.2 — 2013-12-11
- 0.1.1 — 2013-12-10
- 0.1.0 — 2013-12-10

## README

# gulp-csslint [![NPM version][npm-image]][npm-url] [![Build status][travis-image]][travis-url] [![Test coverage][coveralls-image]][coveralls-url] [![Dependency status][david-image]][david-url]
> CSSLint plugin for gulp 3

## Usage

First, install `gulp-csslint` as a development dependency:

```shell
npm install --save-dev gulp-csslint
```

Then, add it to your `gulpfile.js`:

```js
var csslint = require('gulp-csslint');

gulp.task('css', function() {
  gulp.src('client/css/*.css')
    .pipe(csslint())
    .pipe(csslint.formatter());
});
```

## API

### csslint(ruleConfiguration)

#### ruleConfiguration
Type: `Object`

If you pass `lookup: false`, the local .csslintrc is not looked up automatically.

You can pass rule configuration as an object. See the [list of rules by ID on the CSSLint wiki](https://github.com/stubbornella/csslint/wiki/Rules-by-ID) for valid rule IDs.

Any properties passed will be in _addition_ to (or overwriting) the ones in .csslintrc (unless `lookup: false` is passed).

```js
gulp.src('client/css/*.css')
  .pipe(csslint({
    'shorthand': false
  }))
  .pipe(csslint.formatter());
```

### csslint(csslintrc)

#### csslintrc
Type: `String`

You can also pass the path to your csslintrc file instead of a rule configuration object.

```js
gulp.src('client/css/*.css')
  .pipe(csslint('csslintrc.json'))
  .pipe(csslint.formatter());
```

## Results

Adds the following properties to the file object:

```js
file.csslint.success = true; // or false
file.csslint.report = {}; // The report from CSSLint after linting the file
```

## Using formatters

Several formatters come built-in to CSSLint. To use one of these formatters, pass the name to `csslint.formatter`.

For a list of all formatters supported by `csslint`, see the [csslint wiki](https://github.com/CSSLint/csslint/wiki/Command-line-interface#--format).

```js
gulp.task('lint', function() {
  gulp.src('lib/*.css')
    .pipe(csslint())
    .pipe(csslint.formatter('junit-xml'));
```

### Custom formatters

Custom formatters can be provided by first adding a valid CSSLint-formatter, such as `csslint-stylish`, then using it:

```js
var csslint = require('gulp-csslint');

csslint.addFormatter('csslint-stylish');

gulp.task('lint', function() {
  gulp.src('lib/*.css')
    .pipe(csslint())
    .pipe(csslint.formatter('stylish'))
});
```

You can provide the formatter by requiring it directly as well:

```js
var csslint = require('gulp-csslint');

gulp.task('lint', function() {
  gulp.src('lib/*.css')
    .pipe(csslint())
    .pipe(csslint.formatter(require('csslint-stylish')))
});
```

You can also provide an object with the following contract to implement your own formatter:

```js
{
  id: 'string', // Name passed to csslint.formatter
  startFormat: function() {}, // Called before parsing any files, should return a string
  startFormat: function() {}, // Called after parsing all files, should return a string
  formatResult: function (results, filename, options) {} // Called with a results-object per file linted. Optionally called with a filename, and options passed to csslint.formatter(*formatter*, *options*)
}
```

You can also provide a function, which is called for each file linted with the same arguments as `formatResults`.

### Formatter options
You can also pass options to the built-in formatter, by passing a second option to `formatter`.

```js
gulp.task('lint', function() {
  gulp.src('lib/*.css')
    .pipe(csslint())
    .pipe(csslint.formatter('junit-xml', options));
});
```

See the documentation for the formatters regarding what options they support.

This plugin supports one option outside of that, called `logger`, allowing you to specify how to log out the report.
Default is using `process.stdout.write`, but you can use e.g. `console.log`, or `gutil.log`.

```js
gulp.task('lint', function() {
  gulp.src('lib/*.css')
    .pipe(csslint())
    .pipe(csslint.formatter('junit-xml', {logger: console.log.bind(console)}));
});
```

```js
gulp.task('lint', function() {
  gulp.src('lib/*.css')
    .pipe(csslint())
    .pipe(csslint.formatter('junit-xml', {logger: gutil.log.bind(null, 'gulp-csslint:')}));
});
```

`logger` is called once for the starting format of the formatter, then once for each file containing violations, then
lastly once for the ending format. Instead of writing to `stdout`, you can write to file using this option.

```js
gulp.task('lint', function(cb) {
  var fs = require('fs');
  var output = '';

  gulp.src('lib/*.css')
    .pipe(csslint())
    .pipe(csslint.formatter('junit-xml', {logger: function(str) { output += str; }}))
    .on('end', function(err) {
      if (err) return cb(err);

      fs.writeFile('some/path/junit.xml', output, cb);
    });
});
```

This functionality is only available when not using a custom formatting function.

## Custom rules

Use the `csslint.addRule(rule)` method to define custom rules that run in addition to the rules defined in the csslintrc file. See [Working with Rules](https://github.com/CSSLint/csslint/wiki/Working-with-Rules) for details.

```js
var csslint = require('gulp-csslint');

csslint.addRule({
  // rule information
});

gulp.task('lint', function() {
  gulp.src('lib/*.css')
    .pipe(csslint())
    .pipe(csslint.formatter())
});
```

## Fail on errors

Pipe the file stream to `csslint.failFormatter()` to fail on errors.

```js
var csslint = require('gulp-csslint');

gulp.task('lint', function() {
  gulp.src('lib/*.css')
    .pipe(csslint())
    .pipe(csslint.formatter()) // Display errors
    .pipe(csslint.formatter('fail')); // Fail on error (or csslint.failFormatter())
});
```


[travis-url]: http://travis-ci.org/lazd/gulp-csslint
[travis-image]: https://img.shields.io/travis/lazd/gulp-csslint.svg
[npm-url]: https://npmjs.org/package/gulp-csslint
[npm-image]: https://img.shields.io/npm/v/gulp-csslint.svg
[david-url]: https://david-dm.org/lazd/gulp-csslint
[david-image]: https://img.shields.io/david/lazd/gulp-csslint.svg
[coveralls-url]: https://coveralls.io/r/lazd/gulp-csslint
[coveralls-image]: https://img.shields.io/coveralls/lazd/gulp-csslint.svg

---
_Source: https://npm.io/package/gulp-csslint · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
