[Vue CLI 3] @vue/cli-plugin-eslint 源码分析
熟悉 设置一下几项:
module.exports = { // ... module: { rules: [ { test: /.js$/,exclude: /node_modules/,loader: "eslint-loader",options: { // eslint options (if necessary) } },],},// ... } 当然还可以加上 To be safe,you can use enforce: "pre" section to module.exports = { // ... module: { rules: [ { enforce: "pre",test: /.js$/,loader: "eslint-loader" },{ test: /.js$/,loader: "babel-loader" },// ... } 我们看一下 /* config.module.rule(‘eslint‘) */ { enforce: ‘pre‘,test: /.(vue|(j|t)sx?)$/,exclude: [ /node_modules/,‘/Users/***/node_modules/@vue/cli-service/lib‘ ],use: [ /* config.module.rule(‘eslint‘).use(‘eslint-loader‘) */ { loader: ‘eslint-loader‘,options: { extensions: [ ‘.js‘,‘.jsx‘,‘.vue‘ ],cache: true,cacheIdentifier: ‘65e8f1b4‘,emitWarning: true,emitError: false,formatter: function () { /* omitted long function */ } } } ] } 我们看一下 module.exports = (api,options) => {} 我们看一下 是否在开发环境下通过 eslint-loader 在每次保存时 lint 代码。 我们看一下 @vue/cli-service/lib/options.js 的配置: 1、默认是: lintOnSave: true 2、支持下面几个备选值: lintOnSave: joi.any().valid([true,false,‘error‘]) 不然会报错: ERROR Invalid options in vue.config.js: child "lintOnSave" fails because ["lintOnSave" must be one of [true,error]] 接下来就是通过 api.chainWebpack 来设置 webpackConfig api.chainWebpack(webpackConfig => { }) 所以开始的设置 rule 为 eslint,然后设置: webpackConfig.module .rule(‘eslint‘) .pre() .exclude .add(/node_modules/) .add(require(‘path‘).dirname(require.resolve(‘@vue/cli-service‘))) .end() 这里 .add(/node_modules/) .add(require(‘path‘).dirname(require.resolve(‘@vue/cli-service‘))) 然后设置 test .test(/.(vue|(j|t)sx?)$/) 再设置 .use(‘eslint-loader‘) .loader(‘eslint-loader‘) .options({ }) 这里的 options 分为如下几个: 1、extensions An array of filename extensions that should be checked for code. The default is an array containing just ".js". 2、cache Operate only on changed files (default: false). 3、cacheIdentifier 4、emitWarning 默认 false,Loader will always return warnings if option is set to true. 5、emitError 默认 false,Loader will always return errors if this option is set to true. 6、formatter Loader accepts a function that will have one argument: an array of eslint messages (object). The function must return the output as a string. You can use official eslint formatters. 之前用的比较多的是: require("eslint-friendly-formatter") 来源:https://segmentfault.com/a/1190000016236878 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |