2022 年了,怎么还没有 all in one 的 linter+formatter - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
TWorldIsNButThis
V2EX    前端开发

2022 年了,怎么还没有 all in one 的 linter+formatter

  •  
  •   TWorldIsNButThis 2022-03-04 22:22:19 +08:00 2226 次点击
    这是一个创建于 1395 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近要新建一个项目,想把各个依赖都升到最新,结果 vite ts react 的模板项目装好 eslint 上来就报了几个错,用的 airbnb 的预设

    react 插有好几条老规则早不适用了不知道为什么还不改,比如什么 jsx 文件必须引入 react ,还什么函数式组件也提示必须写 defaultProps

    还是说这是 airbnb 预设的问题?

    然后 prettier 和 eslint 还有冲突,比如我声明一个箭头函数,参数用的解构声明,eslint 说太长了必须换行,prettier 说解构声明的大括号后面里不能换行?

    听说 fb 弄了个 all in one 的 rome ,但是我搜了下官网说现在在用 rust 重构项目,这个有人用过吗?

    8 条回复    2022-04-13 18:50:27 +08:00
    yoa1q7y
        1
    yoa1q7y  
       2022-03-04 22:39:52 +08:00
    eslint config 部分配置
    ```json
    {
    "extends": [
    "eslint:recommended",
    "plugin:@typescript-eslint/recommended",
    "plugin:react/recommended",
    "plugin:react-hooks/recommended",
    "plugin:prettier/recommended"
    ],
    "parser": "@typescript-eslint/parser",
    "parserOptions": {
    "ecmaFeatures": {
    "jsx": true
    },
    "ecmaVersion": "latest",
    "sourceType": "module"
    },
    "settings": {
    "react": {
    "version": "detect"
    }
    }
    }
    ```

    package.json
    ```json
    {
    "@typescript-eslint/eslint-plugin": "^5.12.1",
    "@typescript-eslint/parser": "^5.12.1",
    "eslint": "^8.10.0",
    "eslint-config-prettier": "^8.4.0",
    "eslint-plugin-prettier": "^4.0.0",
    "eslint-plugin-react": "^7.29.2",
    "eslint-plugin-react-hooks": "^4.3.0"
    }
    ```

    这样就足够了
    seki
        2
    seki  
       2022-03-04 22:46:21 +08:00
    当然是自己选配啊,当年那些希望推行统一规则的项目比如 jshint 和 standard ,都已经没人用了,因为用的时候总有想法不一致的地方。airbnb 也是适合 airbnb 的情况而已,你用着不舒服也很正常

    prettier 你要看 plugin-prettier 的文档,需要覆盖掉一些规则
    erguotou521
        3
    erguotou521  
       2022-03-04 23:13:48 +08:00 via Android
    npm i -g fe-conf
    fe-conf
    TWorldIsNButThis
        4
    TWorldIsNButThis  
    OP
       2022-03-05 03:57:34 +08:00
    @yoa1q7y
    这个是不是要把 prettier 的配置写在 eslint 里
    然后试了下必须引入 react 的报错还是必须得手动关掉,settings 里设置 react 的版本有啥用
    noe132
        5
    noe132  
       2022-03-05 11:06:50 +08:00 via Android
    自己配+1
    或者不想自己配可以试试我的 config
    https://www.npmjs.com/package/@noe132/eslint-config-react
    eslint fix 就是 formatter ,不需要启用 prettier
    Charrlles
        6
    Charrlles  
       2022-03-05 15:05:43 +08:00 via iPhone
    用 vite 还是需要引入 react 的吧
    Jaosn
        7
    Jaosn  
       2022-03-05 23:47:25 +08:00
    不要用 airbnb ,确实我也觉得前端需要一个 all in one
    hronro
        8
    hronro  
       2022-04-13 18:50:27 +08:00 via iPhone
    说道 all in one ,为啥不考虑 deno ? Linter, Fomatter, Runner 全都有了,速度还特别快(因为它的 linter formatter 都是 Rust 实现的)
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3150 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 12:11 PVG 20:11 LAX 04:11 JFK 07:11
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86