不可否认,代码格式化工具非常有用,但例如 prettier 这样的代码格式化工具,在规范代码的同时会强制你做出取舍,比如在一个 Javascript 项目里包裹字符串只能用单引号或者只能用双引号,但可能我只想要统一缩进,结果它把单双引号也统一了。
那么是否存在一种代码格式化工具,可以最小程度的修改代码,以满足高可读性的要求呢?
简单来说,该工具应满足以下条件:
1
renmu 2022-08-15 18:44:36 +08:00 via Android
1 ,2 你可以设置 prettier 达成
|
2
Jooooooooo 2022-08-15 18:45:26 +08:00
idea 应该就有这种功能
|
3
GPLer OP @renmu 第一条我参考 ![Is there a way to ignore a specific rule? [Possible Feature] #9171]( https://github.com/prettier/prettier/issues/9171) 试了下,像 `singleQuote` 的配置项,配置成 'never' 后确实不生效的,也就是说是可行的,还是我太急躁了,感谢大佬。
至于第二条,其实 prettier 好像本来就是这样的 第三条估计 prettier 也能做到,但是插件的方式还是挺麻烦的,能做到一、二也够用了。 |
4
GPLer OP @GPLer 经测试,never 并不是生效了,而是配置文件中出现了意料之外的值,以至于格式化程序没有执行。。。
参考 https://stackoverflow.com/questions/63813336/how-to-ignore-specific-rules-with-prettier 所以说 prettier 似乎并不能满足要求。 |
5
iamqida 2022-08-15 21:39:21 +08:00
jetbrains 家的 ide 都可以做到
|
7
zhuweiyou 2022-08-15 21:48:26 +08:00 1
你在一个项目或者一个文件里,用不同的风格, 是不是你的不合理呢? 感觉除了老项目不应该格式化以外, 新项目应该统一标准.
|
8
wu67 2022-08-15 21:52:05 +08:00
其实 jb 家的 ide 可以处理这个场景. 编辑器可以按语音配置风格, 非常详细, 几乎开箱即用, 你想要自己配, 也可以微调, 设置窗口右侧有风格示例.
prettier 其实也可以大体上的设置, 但是不算开箱即用(个人认为). 折腾半天还需要配合 eslint 修一遍才行(个人做法是 prettier 格式化一边, 然后 eslint 修一遍), 这样才能符合我对代码风格的期望. 仅 vue 场景, react 未知. 现在不怎么搞 idea 了(其实是穷得不想买), 凑合着用 vsc, 用是能用, 就是各种不方便 可以看看这篇文章 https://blog.isayme.org/posts/issues-50/ 这是我以前配置 vsc 时参考的文章之一 |
9
molvqingtai 2022-08-15 22:00:39 +08:00
你这不是说的 eslint 吗
|
10
Nugine0 2022-08-15 22:44:58 +08:00 via Android
试试 dprint
|
11
placeholder 2022-08-15 22:49:17 +08:00
没有,不用找了,我找了好久了。
|
12
liulangyude 2022-08-15 22:56:37 +08:00
@wu67 破解啊,现在网上教程一大堆,正版主义者的话当我没说
|
13
wu67 2022-08-15 23:36:20 +08:00
@liulangyude hhh, 很快就会有一堆人来批你了...在这网站正版是政治正确. 另外我就是懒得折腾了, 基本每次升级都会失效
|
14
mingl0280 2022-08-15 23:44:12 +08:00
Visual Studio 就行了呗。
|
15
dfkjgklfdjg 2022-08-16 08:34:32 +08:00
所有的代码格式化工具都会提供配置项的吧....
如果只需要某几项,可以单独自己搞一个风格,然后只检查自己配置的项目的。 可以放到编辑器的配置项里面全局使用,也可以搞到项目目录下只检查项目内的编码风格。 |
16
Vaspike 2022-08-16 08:48:35 +08:00
|
17
yangzzzzzz 2022-08-16 09:58:38 +08:00
eslint 改一下格式化风格应该可以满足,airbnb 、prettier 、还有标准的风格,基于这些自己在修改参数
|
18
secondwtq 2022-08-16 19:58:07 +08:00
可以说存在,也可以说不存在。
对于一个黑盒的软件成品来说,“无默认行为”by definition 是不可能的,因为这个软件设计的“功能”就是“行为”的一部分。“无默认行为”等于“无默认功能”,追求完全的自定义,最后都会扩大化到从 mian 函数重写整个软件。 另一方面,很多软件是可以拿到源代码并自己编译的,可以不必“从 mian 函数重写整个软件”,而是在已有源代码上魔改,从这个角度上来讲这些软件确实“无默认行为”,毕竟你可以通过源码的方式修改所有行为。 |