业务背景
- 利用
mpvue
开发小程序 - 使用
airbnb
的eslint
规则
遇到的问题
- 因为在
webpack
的resolve
里面配置了alias
和extensions
- 导致在引入模块的时候报错,说是找不到指定模块
- 但实际上这些模块都是通过
npm
安装了的
相关代码
webpack.base.conf.js
resolve: {
extensions: [".js", ".vue", ".json"],
alias: {
"vue": "mpvue",
"@": resolve("src")
},
...
},
module: {
rules: [
{
test: /\.(js|vue)$/,
loader: "eslint-loader",
enforce: "pre",
...
.eslintrc.js
module.exports = {
parser: 'babel-eslint',
extends: 'airbnb-base',
...
main.js
import Vue from 'vue'; // => ESLint: Unable to resolve path to module 'vue'. (import/no-unresolved)
import App from './App'; // App实际是一个.vue文件 => ESLint: Casing of ./App does not match the underlying filesystem. (import/no-unresolved)
...
报错的效果图如下
我的解决办法
- 直接在
.eslintrc.js
里面的'rules`里面禁用这条规则 - 但是感觉并不优雅啊
- 这应该是由于在webpack里面配置了别名和路径,而eslint没有适配这个规则导致的
问题
能不能直接通过设置webpack来让eslint知道vue就是一个别名呢?
在
.eslintrc.js
中配置: