Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/semigradsky/xo-loader
XO loader for webpack
https://github.com/semigradsky/xo-loader
Last synced: 19 days ago
JSON representation
XO loader for webpack
- Host: GitHub
- URL: https://github.com/semigradsky/xo-loader
- Owner: Semigradsky
- License: mit
- Created: 2015-08-04T16:25:46.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2017-10-10T12:19:54.000Z (about 7 years ago)
- Last Synced: 2024-10-15T02:02:39.289Z (25 days ago)
- Language: JavaScript
- Size: 15.6 KB
- Stars: 15
- Watchers: 3
- Forks: 7
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# xo-loader [![Build Status](http://img.shields.io/travis/Semigradsky/xo-loader.svg)](https://travis-ci.org/Semigradsky/xo-loader)
> [XO](https://github.com/sindresorhus/xo) loader for webpack. Based on [eslint-loader](https://github.com/MoOx/eslint-loader)
## Install
```console
$ npm install xo-loader --save-dev
```## Usage
In your webpack configuration
```javascript
module.exports = {
// ...
module: {
loaders: [
{test: /\.js$/, loader: 'xo-loader', exclude: /node_modules/}
]
}
// ...
}
```When using with transpiling loaders (like `babel-loader`), make sure they are in correct order
(bottom to top). Otherwise files will be check after being processed by `babel-loader````javascript
module.exports = {
// ...
module: {
loaders: [
{test: /\.js$/, loader: 'babel-loader', exclude: /node_modules/},
{test: /\.js$/, loader: 'xo-loader', exclude: /node_modules/}
]
}
// ...
}
```To be safe, you can use `preLoaders` section to check source files, not modified
by other loaders (like `babel-loader`)```js
module.exports = {
// ...
module: {
preLoaders: [
{test: /\.js$/, loader: 'xo-loader', exclude: /node_modules/}
]
}
// ...
}
```### [email protected] and up
As of [latest release notes](https://github.com/webpack/webpack/releases), `preLoaders` and `postLoaders` have been deprecated in favor of `enforce: 'pre'` or `enforce: 'post'`. Also custom properties are not allowed, and can be supplied through `webpack.LoaderOptionsPlugin({})`.
```js
module.exports = {
// ...
module: {
loaders [
{test: /\.js$/, enforce:'pre', loader: 'xo-loader', exclude: /node_modules/}
]
},
plugins: [
new webpack.LoaderOptionsPlugin({
options: {
xo: {
emitError: true
}
}
})
]
// ...
}
```### Options
You can pass [XO options](https://github.com/sindresorhus/xo#config) directly by
- Adding a query string to the loader for this loader usabe only
```js
{
module: {
preLoaders: [
{
test: /\.js$/,
loader: 'xo-loader?{rules:[{semi:0}]}',
exclude: /node_modules/,
},
],
},
}
```- Adding an `xo` entry in your webpack config for global options:
```js
module.exports = {
xo: {
space: true
}
}
```**Note that you can use both method in order to benefit from global & specific options**
#### Errors and Warning
**By default the loader will auto adjust error reporting depending
on xo errors/warnings counts.**
You can still force this behavior by using `emitError` **or** `emitWarning` options:##### `emitError` (default: `false`)
Loader will always return errors if this option is set to `true`.
```js
module.exports = {
entry: "...",
module: {
// ...
}
xo: {
emitError: true
}
}
```##### `emitWarning` (default: `false`)
Loader will always return warnings if option is set to `true`.
##### `failOnWarning` (default: `false`)
Loader will cause the module build to fail if there are any xo warnings.
```js
module.exports = {
entry: "...",
module: {
// ...
}
xo: {
failOnWarning: true
}
}
```##### `failOnError` (default: `false`)
Loader will cause the module build to fail if there are any xo errors.
```js
module.exports = {
entry: "...",
module: {
// ...
}
xo: {
failOnError: true
}
}
```## [Changelog](CHANGELOG.md)
## [License](LICENSE)