@149segolte/xo-loader v0.8.0-beta.4
@149segolte/xo-loader
XO loader for webpack. Based on @Semigradsky/xo-loader
Install
$ npm install @149segolte/xo-loader --save-dev
Usage
In your webpack configuration
module.exports = {
// ...
module: {
loaders: [
{
test: /\.js$/,
loader: '@149segolte/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
module.exports = {
// ...
module: {
loaders: [
{ test: /\.js$/, loader: 'babel-loader', exclude: /node_modules/ },
{
test: /\.js$/,
loader: '@149segolte/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
)
module.exports = {
// ...
module: {
preLoaders: [
{
test: /\.js$/,
loader: '@149segolte/xo-loader',
exclude: /node_modules/,
},
],
},
// ...
};
webpack@2.1.0-beta.23 and up
As of latest release notes, 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({})
.
module.exports = {
// ...
module: {
loaders [
{test: /\.js$/, enforce:'pre', loader: '@149segolte/xo-loader', exclude: /node_modules/}
]
},
plugins: [
new webpack.LoaderOptionsPlugin({
options: {
xo: {
emitError: true
}
}
})
]
// ...
}
Options
You can pass XO options directly by
- Passing options to the loader
{
module: {
preLoaders: [
{
test: /\.js$/,
loader: '@149segolte/xo-loader',
exclude: /node_modules/,
options: {
envs:[
'browser',
'node'
]
}
},
],
},
}
- Adding a query string to the loader, usable only for this loader
{
module: {
preLoaders: [
{
test: /\.js$/,
loader: '@149segolte/xo-loader?{rules:[{semi:0}]}',
exclude: /node_modules/,
},
],
},
}
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
.
module.exports = {
entry: "...",
module: {
// ...
{
test: /\.js$/,
loader: '@149segolte/xo-loader',
exclude: /node_modules/,
options: {
// ...
emitError: true
}
},
}
}
emitWarning
(default: false
)
Loader will always return warnings if option is set to true
.
module.exports = {
entry: "...",
module: {
// ...
{
test: /\.js$/,
loader: '@149segolte/xo-loader',
exclude: /node_modules/,
options: {
// ...
emitWarning: true
}
},
}
}
failOnWarning
(default: false
)
Loader will cause the module build to fail if there are any xo warnings.
module.exports = {
entry: "...",
module: {
// ...
{
test: /\.js$/,
loader: '@149segolte/xo-loader',
exclude: /node_modules/,
options: {
// ...
failOnWarning: true
}
},
}
}
failOnError
(default: false
)
Loader will cause the module build to fail if there are any xo errors.
module.exports = {
entry: "...",
module: {
// ...
{
test: /\.js$/,
loader: '@149segolte/xo-loader',
exclude: /node_modules/,
options: {
// ...
failOnError: true
}
},
}
}
Authors
- Dmitry Semigradsky - Initial work - Semigradsky
- 149segolte - Port using @webpack-contrib/defaults - PurpleBooth
See also the list of contributors who participated in this project.
License
This project is licensed under the MIT License - see the LICENSE file for details The orignal @Semigradsky/xo-loader was published under MIT license.