V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
jameBo
V2EX  ›  JavaScript

我很喜欢 eslint,但是问了好多人都不喜欢, eslint 这么讨人嫌吗?

  •  
  •   jameBo · 2021-03-17 22:01:58 +08:00 · 9229 次点击
    这是一个创建于 1348 天前的主题,其中的信息可能已经有所发展或是发生改变。
    93 条回复    2021-05-07 09:05:48 +08:00
    hronro
        1
    hronro  
       2021-03-17 22:14:20 +08:00
    可以理解成你问过的人对代码质量都没啥要求
    molvqingtai
        2
    molvqingtai  
       2021-03-17 22:17:08 +08:00 via Android   ❤️ 1
    我就是有强迫症的人,新项目 eslint 第一部就是配 eslint,看到那种没有 eslint 的代码浑身不自在
    renmu123
        3
    renmu123  
       2021-03-17 22:17:41 +08:00 via Android   ❤️ 3
    我也不太喜欢,但是我很喜欢 prettier
    imycc
        4
    imycc  
       2021-03-17 22:45:32 +08:00   ❤️ 4
    每次写完代码整个文件没有红色就很开心 hhh
    QingStone
        5
    QingStone  
       2021-03-17 22:48:30 +08:00 via iPhone
    我就喜欢 ESLint,但现在待的公司不用。
    gouflv
        6
    gouflv  
       2021-03-17 22:59:11 +08:00 via iPhone
    小马过河
    afx
        7
    afx  
       2021-03-17 23:09:23 +08:00 via iPhone
    写个 for 遍历 map 都要警告,一行超过 100 行也能警告,确实没什么好感。
    fxjson
        8
    fxjson  
       2021-03-17 23:20:07 +08:00 via Android
    我也喜欢,最近刚尝试用到以及的 demo 项目中
    reiji
        9
    reiji  
       2021-03-17 23:25:16 +08:00
    看情况,需要协作的情况终究是少数
    Kasumi20
        10
    Kasumi20  
       2021-03-17 23:26:50 +08:00   ❤️ 1
    @afx 定义一个未使用的函数和变量也警告,我特么现在不用不意味着我以后不用啊。。。vue-cli 还自带这东西,警告贴在页面上,真牛皮
    JerryCha
        11
    JerryCha  
       2021-03-17 23:27:39 +08:00   ❤️ 1
    可能你没有碰过一个变量必须定义为 any,husky 告诉你这样不行,git 回滚还碰到 permission denied 的时候。
    PerFectTime
        12
    PerFectTime  
       2021-03-17 23:28:37 +08:00
    eslint + prettier = 超级大炸弹
    ShareManT
        13
    ShareManT  
       2021-03-17 23:29:58 +08:00
    @afx 这些是规则,可以自己配置。
    liyang5945
        14
    liyang5945  
       2021-03-17 23:31:16 +08:00
    自己配置,去掉一些扯蛋的规则挺好的
    Biwood
        15
    Biwood  
       2021-03-18 00:18:19 +08:00 via iPhone
    不喜欢的人主要不喜欢那次过于严格的规则限制,又懒得花时间去一个个配置。楼上有人提到 prettier,那是格式化代码用的,跟 lint 工具不是一个东西。我个人觉得还是很有用的,特别是在写 TypeScript 的时候。
    LokiSharp
        16
    LokiSharp  
       2021-03-18 00:42:59 +08:00 via iPhone   ❤️ 9
    主要是是不会配规则吧。
    大多数前端连 TS 都不愿意学,就别指望他们主动学 ESLint 了
    isukkaw
        17
    isukkaw  
       2021-03-18 00:47:40 +08:00
    喜欢 ESLint 的人一般代码质量都不会差;
    有自己专属的 ESLint 配置的人一般是强迫症晚期。

    https://www.npmjs.com/package/eslint-config-sukka 溜了溜了)
    chrisia
        18
    chrisia  
       2021-03-18 00:50:15 +08:00
    eslint + prettier 一个是格式和语法纠错,另一个是代码格式化。这两种东西本身可以合并到一起,所以给人的感觉就是太繁杂,我只是想格式化一下代码而已。
    chrisia
        19
    chrisia  
       2021-03-18 00:54:01 +08:00
    @chrisia 即使有脚手架工具,我也觉得这种方式不太优雅,前端的依赖乱七八糟的。
    duan602728596
        20
    duan602728596  
       2021-03-18 00:54:38 +08:00 via iPhone
    不仅用,而且配置相当严格。ts 直接要求全部声明类型。严格要求自己。
    见过不用 lint 的代码,真的就是屎一样,没有约束,都要飞起来了。
    seki
        21
    seki  
       2021-03-18 01:21:11 +08:00
    linter 是帮助写出有一定基础质量保障的代码的,而不是来让你与他对抗的
    写多了代码有团队合作经历的话应该就能理解到,对于 JS 这种灵活度很高的语言来说,自己或者别人不用 linter 写出来的代码,总有一天会不得不亲自品尝里面的酸爽滋味
    torenayto
        22
    torenayto  
       2021-03-18 01:25:32 +08:00 via iPhone
    eslint+prettier 必备,写代码的时候不必在意缩进什么的,一保存就自动格式化代码,不爽吗🤣
    huijiewei
        23
    huijiewei  
       2021-03-18 01:59:02 +08:00 via iPhone
    eslint 的幸福竟然有人体会不到

    屎代码里面游泳感觉好?
    Perry
        24
    Perry  
       2021-03-18 02:00:17 +08:00 via iPhone
    说明你的圈子有问题 🐶
    Sparetire
        25
    Sparetire  
       2021-03-18 02:07:45 +08:00 via Android   ❤️ 1
    团队规范,那让用啥就用啥除非你有决策权

    个人项目,拿着别人的配置用着不爽就不要怪工具,不爽才是正常的,不自己配等于给自己找不自在

    一堆人指着一个 ESlint 各说各的,可能他们用的配置都不是同一套,一个人拿着 A 家的配置用着说 ESlint 垃圾,一个人用着 G 家的配置说好,鸡同鸭讲也能讨论得这么热烈。。
    还有只想格式化代码的明明有个单独的 Prettier 不用非要强行加 ESlint 完了还要转进到依赖乱七八糟也是没懂这逻辑。。这用户下沉得有些厉害
    ayase252
        26
    ayase252  
       2021-03-18 02:58:30 +08:00 via iPhone
    挺好的,我们都放 pre-commit 里面,不过不准 commit
    YUyu101
        27
    YUyu101  
       2021-03-18 06:46:48 +08:00 via Android   ❤️ 1
    一个人开发,格式化就够了,代码规范心里有数
    wangxiaoaer
        28
    wangxiaoaer  
       2021-03-18 07:37:32 +08:00 via iPhone
    运维这东西跟代码质量没半毛钱关系,只是风格问题。

    就好比 golang 自带 format 未引用包自动删除等,但不意味大家写的 golang 代码质量都一样。
    love
        29
    love  
       2021-03-18 07:52:52 +08:00
    不是 eslint 好不好用,而是大部分人写程序真的只是为了糊口,能不多动一点绝对不动,哪怕其实这货一开始要多付出几分钟但会带来后续的持续效率提高
    love
        30
    love  
       2021-03-18 07:54:09 +08:00
    @YUyu101 一个人开发 typescript 也别用了,类型什么心里有数,注释也可以不要,自己写的自己还不清楚
    wxsm
        31
    wxsm  
       2021-03-18 08:14:08 +08:00 via iPhone   ❤️ 1
    eslint + prettier 可以保证团队代码风格统一,这样提交的时候冲突概率会小很多。至少可以防止因各人格式化工具不同导致的大面积冲突。从这个角度来说它是很好的。
    afx
        32
    afx  
       2021-03-18 08:44:50 +08:00 via iPhone
    @afx 对了,循环里面用 i++这种也警告,必须要你用 i+=1,反感的不是这软件。反感的是设置垃圾规则的人
    chenmobuys
        33
    chenmobuys  
       2021-03-18 08:52:07 +08:00
    因为 js 本身就很乱,每个人都养成了自己的语法习惯,用统一的规则就会很难受,当然如果你是规则的制定者,用的肯定舒服。
    Shook
        34
    Shook  
       2021-03-18 08:54:50 +08:00
    它是工具,用来统一代码风格的。
    所以在团队里很有用。
    rodrick
        35
    rodrick  
       2021-03-18 08:57:52 +08:00
    看团队需求呗 一个规范而已 没啥好喜不喜欢的
    vicalloy
        36
    vicalloy  
       2021-03-18 08:57:59 +08:00
    ESLint 的规则和 Prettier 有冲突。
    现在 ESLint 也可以对代码进行格式化,没有必要再集成 Prettier 。
    必须配置到 pre-commit 里,不然总有人喜欢把一堆乱七八糟的代码放到代码库里。
    yimity
        37
    yimity  
       2021-03-18 08:58:38 +08:00
    @molvqingtai 但是总要配置,默认的不喜欢就比较麻烦。
    @renmu123 默认规则不好自定义。
    @imycc +1
    @JerryCha unknown
    @PerFectTime 嗯,要是有冲突,很烦人。
    @chrisia @torenayto 主要是两个规则有时候会冲突,就很烦人 Eslint 可以调,但是 prettier 自定义比较少,想按照 eslint 的来,就很麻烦。
    Team
        38
    Team  
       2021-03-18 09:03:15 +08:00
    @hronro #1 这非黑即白的理解是小学生的心智水平
    我想你应该很赞同我的描述,因为这句话和你的那句话基本上是同一水平的
    BarZu
        39
    BarZu  
       2021-03-18 09:11:26 +08:00
    如果没有 eslint,我还不知道原来代码可以这么优雅
    hongjiapei
        40
    hongjiapei  
       2021-03-18 09:17:38 +08:00
    大家都喜欢指定标准,不喜欢遵守标准,这是人性。
    ccraohng
        41
    ccraohng  
       2021-03-18 09:20:30 +08:00 via iPhone
    eslint -prettier 插件不是有吗?
    有画面感了
    DOLLOR
        42
    DOLLOR  
       2021-03-18 09:27:11 +08:00
    eslint 是挺好的工具,团队里用上了,避免出现放飞自我的屎山。
    总不能一边批 JS 混乱,又一边自己制造混乱的代码吧?
    lightjiao
        43
    lightjiao  
       2021-03-18 09:32:21 +08:00
    我待过的 5 家公司,只有一家公司使用了 lint 相关的自动化脚本,也只有那一家使用的是 Git + Gitlab 做版本管理
    wangyzj
        44
    wangyzj  
       2021-03-18 09:35:11 +08:00
    eslint+airbnb
    EPr2hh6LADQWqRVH
        45
    EPr2hh6LADQWqRVH  
       2021-03-18 09:39:38 +08:00
    eslint 本身没啥问题,主要是默认规则太蠢,还给我叫什么 common, 就大家都一样蠢一样审丑吗?

    根本不知道啥是美的一个狗东西,大众审美都被拉低了
    ruoxie
        46
    ruoxie  
       2021-03-18 09:47:54 +08:00
    没用 eslint 的,难道没遇到过改别人代码,可能只改了一个变量名,格式化直接整个文件内容都改了,code review 根本没法做
    grewer
        47
    grewer  
       2021-03-18 09:51:27 +08:00
    必须要 eslint 和 prettier 针对不同项目配置不同规则 有时候还需要一点自定义规则
    javapythongo
        48
    javapythongo  
       2021-03-18 09:53:45 +08:00
    之前不喜欢,直到我知道可以用 eslint 的规则来快速格式化代码后,就很香
    Lee2019
        49
    Lee2019  
       2021-03-18 09:57:55 +08:00
    有些扯淡的规则干掉就挺舒服的
    Keng
        50
    Keng  
       2021-03-18 10:02:48 +08:00
    每个项目必用 eslint,要不然各种个样放飞自我的代码能看到吐血。
    我不喜欢它是因为自定义程度太高了,每个人都按自己的「审美」美化,有时候只是想看看别人发过来的代码,一片红,吓人;一格式化一大片修改。
    所以我现在换到 go 了,统一的规则,省心,看别人的代码也是熟悉的味道。这样即使用 tab 缩进、大量的 if err != nil 至少占用 3 行 也完全能接受。个人的审美毕竟是主观的。
    yazoox
        51
    yazoox  
       2021-03-18 10:05:56 +08:00
    eslint 是工程项目必备的啊。
    我们公司这个是强制的,不 fix 掉,代码根本提交不进去。
    ERRASYNCTYPE
        52
    ERRASYNCTYPE  
       2021-03-18 10:23:14 +08:00
    eslint 可太好了,自己配置一套易用但是符合基本规范的规则就行。
    就是维护离职员工的项目的时候,上百个错误就比较难看
    myCupOfTea
        53
    myCupOfTea  
       2021-03-18 10:29:11 +08:00
    定义一个未使用的函数和变量 typescirpt strict 模式下也过不去,
    槽点是自己的不是检测工具的,不用的代码为啥要提交上去有病吧
    mxT52CRuqR6o5
        54
    mxT52CRuqR6o5  
       2021-03-18 10:30:04 +08:00
    @ruoxie 用了才不会出现这种问题,你每个人都用各自的格式化配置,一格式化当然整个文件内容都改了,用了统一格式就不会有这问题了
    pkoukk
        55
    pkoukk  
       2021-03-18 10:31:23 +08:00
    主要是默认的规则太扯淡了,老要去配置
    有些祖传项目 npm i 之后,eslint 升了一个小版本,有些原来允许的操作又被禁止了。
    老代码又不想改,要么去锁 package 版本,要么去改 eslint 配置,怎么搞怎么蛋疼。

    你说要是 golanglint 这种级别的 lint,用起来不怎么用管配置就很舒心。
    个人来说,是非常支持 Lint 的,但就是不喜欢 eslint
    xianxiaobo
        56
    xianxiaobo  
       2021-03-18 10:31:25 +08:00
    我觉得 eslint 的问题在于 js 代码格式规范没有一个标准
    66beta
        57
    66beta  
       2021-03-18 10:32:05 +08:00
    它们不喜欢是因为懒,不会用

    git 钩子强制开启检测,不符合规范的代码提交个毛
    66beta
        58
    66beta  
       2021-03-18 10:33:23 +08:00   ❤️ 1
    @xianxiaobo airbnb 的算业界公认的标准了吧

    对自己要求放低就用 eslint-config-standard 凑活也行
    zhuweiyou
        59
    zhuweiyou  
       2021-03-18 10:36:12 +08:00
    不用 eslint, 提交 prettier 一把梭. 别说什么代码质量
    keepeye
        60
    keepeye  
       2021-03-18 10:43:16 +08:00
    eslint 挺好的,至少代码写出来整洁一些
    ppxppx
        61
    ppxppx  
       2021-03-18 10:45:26 +08:00 via Android
    ppxppx
        62
    ppxppx  
       2021-03-18 10:45:29 +08:00 via Android
    yyzcl
        63
    yyzcl  
       2021-03-18 10:46:14 +08:00 via Android
    不觉得 eslint 和代码质量有什么强联系
    水平低的人在符合 eslint 规则下写出来的代码依旧是垃圾
    不过用于团队协作还是可以避免一些低级屎山
    那些屎山代码,我想大多是因为逻辑成了屎山,而不是一些代码风格,全等双等之类的区别
    miniwade514
        64
    miniwade514  
       2021-03-18 10:55:43 +08:00
    你问的都是些什么人
    ZSeptember
        65
    ZSeptember  
       2021-03-18 10:59:55 +08:00
    lint 是好东西,然后为啥要求别人的认同
    xiangyuecn
        66
    xiangyuecn  
       2021-03-18 11:00:35 +08:00
    eslint 把不痛不痒的压根不是问题的问题画个红线就没有意思了,让我这种 var 关键字走天下的人情何以堪😂 此处应该被 /* eslint-disable */

    idea 写 java 也是一样的卵毛病,一堆没卵用的警告把很关键甚至致命的警告给淹没了

    修改配置?成本很高的,老年人不爱学习了,也很难学动。所以很大程度促进了选择性无视警告
    KyrieJoshua
        67
    KyrieJoshua  
       2021-03-18 11:01:16 +08:00
    我还以为现在已经几乎没有不用 eslint 的前端了……
    justsosososo
        68
    justsosososo  
       2021-03-18 11:06:49 +08:00
    不, 那是他们没有追求,多人开发一个项目的时候 eslint+prettier+git 钩子可以一定程度的阻止屎山的堆积速度
    TomatoYuyuko
        69
    TomatoYuyuko  
       2021-03-18 11:13:18 +08:00
    写代码一小时,配置 eslint+prettier 一整天
    Vegetable
        70
    Vegetable  
       2021-03-18 11:15:28 +08:00
    如果团队是 PR+codereview 模型,不用 ESLINT 还能玩?张三写代码不格式化,李四改了一行代码,格式化不格式化?
    不格式化怪恶心的,格式化了一提交,几百个变更。

    后来 vscode 的哪个插件还做了 [仅格式化文件变更的部分] 这种功能

    讨厌 ESLINT 当然是个人自由,但是为什么现在有编程语言开始内置 fmt ?因为这事儿,真的很重要。

    Eslint 的规则都可以自己配置,有不喜欢的规则,团队内部直接去掉就是了,这不是工具的问题,是人的问题。
    SZP1206
        71
    SZP1206  
       2021-03-18 11:17:08 +08:00
    68 楼说得对。
    eslint+prettier 日常使用。
    jimliang
        72
    jimliang  
       2021-03-18 11:17:50 +08:00
    团队项目很有必要的,你永远不知道其他开发者有哪些奇葩的写法,甚至各种缩进不规范,一会有空格一会没空格,让人头大。
    JaaaaackZheng
        73
    JaaaaackZheng  
       2021-03-18 11:27:34 +08:00
    =.= 规则不是都能配置吗,鸡肋的规则去掉就完事了。既能统一好团队代码风格,还能自动格式化,为什么讨厌 eslint
    libook
        74
    libook  
       2021-03-18 11:38:22 +08:00   ❤️ 6
    每个人对团队氛围的要求是不一样的。

    很多人都不喜欢被束缚,尤其是我,所以我通常是不会用 eslint 的。

    首先要明确一点:JS 是一门极其灵活的语言,一个需求可以用超多种方案来实现,但并不是所有方案都没有隐患,所以对开发者的要求很高,开发者需要有大量的经验以及良好的习惯来规避各种各样的隐患。

    于是在团队协作的项目中,你会发现因为每个成员的水平不一样,并不都能驾驭好各种各样的骚操作,以及不同的编码风格可能会导致整体代码的可读性较差;
    当代码问题成为阻碍产能的重要问题的时候,就需要工具来辅助:Linter

    接下来是另一个共识:工具是用来解决问题的,不是用来制造问题的。

    那么如何利用 ESLint 来解决团队已经遇到的问题,同时又不产生更多问题,这个不同的 Leader 可能会有不同的策略。
    我的策略是做加法,即为先关闭所有规则,然后把实际代码中的问题搬到 Codereview 会上然后让团队一致同意添加相应的 lint 规则。

    我会对规则进行分类:
    1. 一定或在绝大多数情况下都会导致缺陷的写法。
    2. 虽然不会导致缺陷,但是会较明显地影响代码的可读性。

    添加每一种规则的时候,要记录有问题的代码案例,以及为什么添加这一条规则,这样新入职的员工可以参考。

    最后就是,这些规则都不是一成不变的,如果随着变化使得某一条规则不再适用,可以随时讨论修改或去掉它。
    kingwl
        75
    kingwl  
       2021-03-18 13:13:26 +08:00
    大多数情况下 prettier 即可,除非是 react deps list 这种
    charlie21
        76
    charlie21  
       2021-03-18 14:39:43 +08:00
    不用 eslint 写出来的好代码,存在吗?是不存在的,在见不得人好的 eslint 使用者看来
    zhlssg
        77
    zhlssg  
       2021-03-18 16:16:40 +08:00
    eslint 不能阻止屎山堆积,但是能减慢屎山堆积的速度
    还有就是从过去的经验来看,很多人都会在本地把自己 eslint 规则改掉
    Marszm
        78
    Marszm  
       2021-03-18 16:32:55 +08:00
    和人合作么?合作的人牛逼么?....合作,合作的人技术不能保证..还有啥好说的,必须 eslint..

    但是自己写自己用...我去 TM 的 Eslint...老子爱怎么写怎么写..我就喜欢按空格,我就喜欢定义各种变量不用..管的着么你 eslint 滚一边去.
    joshua7v
        79
    joshua7v  
       2021-03-18 16:35:13 +08:00
    讨厌的不是 eslint 而是不符合自己风格的规则
    对于团队,不管喜不喜欢都得接受团队的规则
    对于自己,有 ts,一般不需要 eslint 的约束
    wobuhuicode
        80
    wobuhuicode  
       2021-03-18 16:54:11 +08:00
    我也喜欢 eslint,但是是我自己定规则的 eslint
    别人定的都是傻 X 规则……
    wangtian2020
        81
    wangtian2020  
       2021-03-18 17:17:58 +08:00   ❤️ 1
    prettier 提高效率
    eslint 我不知道除了爆红拉我高血压还有什么用
    luvxy
        82
    luvxy  
       2021-03-18 17:42:12 +08:00
    我喜欢用 prettier 有时候有些团队 eslint 搞的太严格 有点烦人
    lizhesystem
        83
    lizhesystem  
       2021-03-18 17:57:44 +08:00
    很喜欢用,如果不用感觉写代码的时候少点什么。
    danieladu
        84
    danieladu  
       2021-03-18 17:58:56 +08:00
    有专业的人指导你代码什么格式比较好,有什么不好的
    enchilada2020
        85
    enchilada2020  
       2021-03-18 18:11:28 +08:00 via Android
    @libook 每次看您的回复都有所收获 再次感谢
    YUyu101
        86
    YUyu101  
       2021-03-18 18:59:09 +08:00 via Android
    @love typescript 是为了自动补全,类型是什么我当然心里有数,但编辑器没数啊。
    tony1890
        87
    tony1890  
       2021-03-18 21:35:53 +08:00
    我只用 prettier,规范格式。

    eslint 太严格。公司在意的是你多长时间写出一个页面,而不是你的代码是否优雅。除非公司高层理解高质量项目的重要性,否则还是算了。(我自己的 demo 按照 vue-cli 的配置来,不喜欢的时候就把 vue-element-admin 的配置拷贝一下。)

    我们园区团队维护的公共库,连 prettier 都没有,changelog 也没有。我问“能不能写一下 changelog”,对方回答“没时间,你看提交记录吧”。

    所以说,要不要用 eslint,看公司,新技术之类的同样如此。忙着赶项目能跑起来就不错了。并且很多小公司的项目根本活不长。
    stockmaster
        88
    stockmaster  
       2021-03-19 02:05:49 +08:00
    eslint 有些要求确实莫名奇妙,比如 a&&b||c&&d 要求必须在所有&&的周围加括号
    bojackhorseman
        89
    bojackhorseman  
       2021-03-19 08:02:31 +08:00 via iPhone
    eslint 和 prettier 冲突怎么办?按照 eslint 规范改完,一格式化就没了🤨
    jzmws
        90
    jzmws  
       2021-03-19 09:05:44 +08:00
    eslint 就是告诉你一个规则 每个人都要遵守 好处 是 从代码管理上风格统一,方便后续其他人员对接 不友好的 代码限制太多,放荡不羁的程序员 不喜欢条条框框的限制.
    07ly
        91
    07ly  
       2021-03-19 14:55:15 +08:00
    lint 是个好东西,如果是在开发新项目时引入,规则统一,我是支持的。

    但是如果是在项目都开发了一段时间;或者都开发完成,上线了几个版本,做后续维护的时候引入。还要你让原有代码符合规范,还把这个作为绩效考核的一部分的话,那我选择跑路
    xingguang
        92
    xingguang  
       2021-03-19 17:18:06 +08:00
    很所人不喜欢 eslint 是觉得不自由,但是靠着各种骚操作搞出来都代码质量上可能堪忧
    cereschen
        93
    cereschen  
       2021-05-07 09:05:48 +08:00
    因为很少有人会配置 eslint 就这么简单 他们的项目基本上都是用的一套预设 有的规则确实没什么必要 所以才反感而已
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5993 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 03:19 · PVG 11:19 · LAX 19:19 · JFK 22:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.