Package Exports
- xo-loader
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (xo-loader) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
xo-loader 
XO loader for webpack. Based on eslint-loader
Install
$ npm install xo-loader
Usage
In your webpack configuration
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
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
)
module.exports = {
// ...
module: {
preLoaders: [
{test: /\.js$/, loader: '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: 'xo-loader', exclude: /node_modules/}
]
},
plugins: [
new webpack.LoaderOptionsPlugin({
options: {
xo: {
emitError: true
}
}
})
]
// ...
}
Options
You can pass XO options directly by
- Adding a query string to the loader for this loader usabe only
{
module: {
preLoaders: [
{
test: /\.js$/,
loader: 'xo-loader?{rules:[{semi:0}]}',
exclude: /node_modules/,
},
],
},
}
- Adding an
xo
entry in your webpack config for global options:
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
.
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.
module.exports = {
entry: "...",
module: {
// ...
}
xo: {
failOnWarning: true
}
}
failOnError
(default: false
)
Loader will cause the module build to fail if there are any xo errors.
module.exports = {
entry: "...",
module: {
// ...
}
xo: {
failOnError: true
}
}