eslint-plugin-taro 在 Sublime 里兼容性不太好,所以把 eslint-plugin-taro 换成了 eslint-plugin-standard,暂时解决这个坑,希望 taro 可以兼容一下。

换成 eslint-plugin-standard 需要安装四个包
eslint-config-standard eslint-plugin-node eslint-plugin-promise eslint-plugin-standard
其中需要注意:"eslint-plugin-node": "^6.0.1"
然后记得修改 .eslintrc,把 extends 改成 standard,还需要修改下 rules
{
"extends": ["standard"],
"rules": {
// "no-unused-vars": ["error", { "varsIgnorePattern": "Taro" }],
// "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx", ".tsx"] }],
"no-unused-vars": ["error", { "varsIgnorePattern": "[A-Z].*" }],
"react/jsx-filename-extension": 0
},
"parser": "babel-eslint"
}
Sublime
Build 3143
SublimeLinter
v3
https://github.com/SublimeLinter/SublimeLinter/releases/tag/v3.10.10
SublimeLinter-eslint
v1
https://github.com/SublimeLinter/SublimeLinter-eslint/releases/tag/1.10.1
欢迎提交 Issue~
如果你提交的是 bug 报告,请务必遵循 Issue 模板的规范,尽量用简洁的语言描述你的问题,最好能提供一个稳定简单的复现。🙏🙏🙏
如果你的信息提供过于模糊或不足,或者已经其他 issue 已经存在相关内容,你的 issue 有可能会被关闭。
Good luck and happy coding~
如果你用 standard 就跟 Taro 没有关系了,里面没有 Taro 的规则的
如果你用 standard 就跟 Taro 没有关系了,里面没有 Taro 的规则的
其实我是想用 eslint-plugin-taro,不得已才换成 eslint-plugin-standard,如果开发团队觉得没必要做这个兼容,也没事,但是这个坑我昨天是踩了一个下午才解决,各种尝试...
又折腾了一下,发现 airbnb 比 standard 效果好,需要安装两个包
eslint-config-airbnb eslint-plugin-jsx-a11y
.eslintrc
{
"parser": "babel-eslint",
"extends": "airbnb",
"rules": {
"comma-dangle": 0,
"class-methods-use-this": 0,
"semi": 0,
"space-before-function-paren": ["error", "always"],
"import/no-unresolved": 0,
"jsx-a11y/label-has-associated-control": 0,
"no-undef": 0,
"no-plusplus": 0,
"no-console": 0,
"react/sort-comp": 0,
"react/prop-types": 0,
"react/react-in-jsx-scope": 0,
"react/no-danger": 0,
"react/jsx-filename-extension": 0,
"react/destructuring-assignment": 0
}
}
@taichenglu 这两个又不冲突的。。 eslint-plugin-taro 中的规则主要是针对 Taro 开发自身的,比如给你提示 jsx 不能写在 render 外,不支持 ... 操作符。 eslint 的 plugin 又不是只能用一个,你完全可以这样:
{
"extends": ["taro", "airbnb"],
}
如果觉得 taro 的某些规则不好,你在 rule 里关掉就行了...
@js-newbee 所言极是
@taichenglu 这两个又不冲突的。。 eslint-plugin-taro 中的规则主要是针对 Taro 开发自身的,比如给你提示 jsx 不能写在 render 外,不支持 ... 操作符。 eslint 的 plugin 又不是只能用一个,你完全可以这样:
{ "extends": ["taro", "airbnb"], }如果觉得 taro 的某些规则不好,你在 rule 里关掉就行了...
这和 rules 没有关系,可能我一楼没有描述好,你看一楼的截图,sublime 直接提示 cannot read config file,但是 eslint-plugin-taro 这个包是已经安装成功了的,只是 cannot read。而我同事用 vscode 就没这个问题,所以我猜是不是 eslint-plugin-taro 的兼容性不太好,我的开发环境在一楼有注明,并且 node8 和 node10 都尝试过。
@taichenglu 好吧,乍一看还以为是说 eslint-plugin-taro 的规则问题...
不过 Sublime Build 3143 很旧了,看你贴的 SublimeLinter、SublimeLinter-eslint 也很旧,不妨都更新到新版再试试?
@js-newbee 今天上午我也尝试过最新的 Sublime Build 3176,问题依旧,然后我又尝试把 SublimeLinter 和 SublimeLinter-eslint 升级到最新,packagecontrol.io 连不上,改了 channels 源,依然安装不成功,只好手动 clone 安装,但是发现安装了却用不了,没一点反应,比较诡异。
你的 linter 有报错吗
@yuche 我对比了 eslint-plugin-standard 的包文件,应该是 eslint-plugin-taro 没有转成 es5,我作了个测试
index.js
删除顶部的 require,改成如下测试
module.exports = {
rules: {
'no-jsx-in-class-method': require('./rules/no-jsx-in-class-method')
},
...
const { buildDocsMeta } = require('../utils/utils')
改成
const buildDocsMeta = require('../utils/utils')
module.exports = {
docsUrl,
buildDocsMeta,
parserOptions,
testComponent,
testValid,
testInvalid,
isTaroComponent
}
删除其他代码,改成
module.exports = buildDocsMeta
就可以了。
如果是这样我觉得应该你要升级 sublime 使用的默认 node 版本,你可以查找 sublime 用的 node 版本是哪个
如果是这样我觉得应该你要升级 sublime 使用的默认 node 版本,你可以查找 sublime 用的 node 版本是哪个
@yuche 提醒得很好,赞一个。虽然用了 nvm,但是 sublime 还是用的 system 的 node 版本
/usr/local/bin/node
这个版本是 mac 系统自带的,刚刚把它升级到 v8,没有问题了。
sudo npm install -g n
sudo n 8
我 close 了
airbnb的规则比较成熟,覆盖也很全
Most helpful comment
@taichenglu 这两个又不冲突的。。 eslint-plugin-taro 中的规则主要是针对 Taro 开发自身的,比如给你提示 jsx 不能写在 render 外,不支持 ... 操作符。 eslint 的 plugin 又不是只能用一个,你完全可以这样:
如果觉得 taro 的某些规则不好,你在 rule 里关掉就行了...