zoro-cli
Version:
https://github.com/vuejs/vue-cli
44 lines (41 loc) • 1.21 kB
JavaScript
module.exports = ({ api, options }) => {
const { lintOnSave } = options
if (lintOnSave) {
const extensions = ['.js', '.jsx', '.ts', '.tsx', '.vue']
// eslint-loader doesn't bust cache when eslint config changes
// so we have to manually generate a cache identifier that takes the config
// into account.
const { cacheIdentifier } = api.genCacheConfig(
'eslint-loader',
{
'eslint-loader': require('eslint-loader/package.json').version,
eslint: require('eslint/package.json').version,
},
[
'.eslintrc.js',
'.eslintrc.yaml',
'.eslintrc.yml',
'.eslintrc.json',
'.eslintrc',
'package.json',
]
)
api.chainWebpack(webpackConfig => {
webpackConfig.module
.rule('eslint')
.pre()
.exclude.add(/node_modules/)
.end()
.test(/\.(vue|(j|t)sx?)$/)
.use('eslint-loader')
.loader('eslint-loader')
.options({
extensions,
cache: true,
cacheIdentifier,
emitWarning: options.lintOnSave !== 'error',
formatter: require('eslint/lib/formatters/codeframe'),
})
})
}
}