46 lines
1.0 KiB
JavaScript
46 lines
1.0 KiB
JavaScript
const { resolve } = require('path')
|
|
const logger = require('./logger')
|
|
const { moduleExists } = require('./utils')
|
|
|
|
module.exports = function (moduleOptions) {
|
|
if (!moduleExists('eslint')) {
|
|
logger.warn(
|
|
'The dependency `eslint` not found.',
|
|
'Please run `yarn add eslint --dev` or `npm install eslint --save-dev`'
|
|
)
|
|
return
|
|
}
|
|
|
|
const options = {
|
|
extensions: ['ts', 'js', 'vue'],
|
|
...this.options.eslint,
|
|
...moduleOptions
|
|
}
|
|
|
|
const filesToWatch = [
|
|
'.eslintrc',
|
|
'.eslintrc.json',
|
|
'.eslintrc.yaml',
|
|
'.eslintrc.yml',
|
|
'.eslintrc.js'
|
|
]
|
|
|
|
this.options.watch.push(
|
|
...filesToWatch.map(file => resolve(this.options.rootDir, file))
|
|
)
|
|
|
|
this.extendBuild((config, { isDev, isClient }) => {
|
|
if (isDev && isClient) {
|
|
config.module.rules.push({
|
|
enforce: 'pre',
|
|
test: RegExp(`\\.(${options.extensions.join('|')})$`),
|
|
loader: 'eslint-loader',
|
|
exclude: /(node_modules)/,
|
|
options
|
|
})
|
|
}
|
|
})
|
|
}
|
|
|
|
module.exports.meta = require('../package.json')
|