Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lazd/gulp-csslint
CSSLint plugin for gulp
https://github.com/lazd/gulp-csslint
Last synced: 10 days ago
JSON representation
CSSLint plugin for gulp
- Host: GitHub
- URL: https://github.com/lazd/gulp-csslint
- Owner: lazd
- License: mit
- Created: 2013-12-09T21:27:38.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2022-12-06T17:30:17.000Z (over 1 year ago)
- Last Synced: 2024-06-18T14:03:48.442Z (19 days ago)
- Language: JavaScript
- Homepage:
- Size: 285 KB
- Stars: 75
- Watchers: 5
- Forks: 14
- Open Issues: 20
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Lists
- awesome-gulp-plugins - gulp-csslint - ci.org/lazd/gulp-csslint.png?branch=master)](https://travis-ci.org/lazd/gulp-csslint) [![Dependency Status](https://david-dm.org/lazd/gulp-csslint.png)](https://david-dm.org/lazd/gulp-csslint) (Getting Started / Overview)
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