VSCode中Prettier未修复TSLint的Max-line-length问题求助
问题原因拆解(我之前也踩过这个坑!)
嘿,来给你捋清楚为啥会出现这种情况,核心是Prettier的设计逻辑和工具规则配合的问题,主要有这几点:
Prettier对import语句有「特殊照顾」
别把print-width当成说一不二的硬规则,Prettier对某些语法会网开一面,import就是其中之一。默认情况下,它不会拆分from后面的模块路径字符串——哪怕整个import行的总长度超了你设置的100。只有当路径本身的长度直接怼过print-width,或者import里的解构内容(比如{ A, B, C, D, E })实在太长时,它才会动手换行。你的例子里,那个../../some_very_long_path本身可能没到100字符,所以Prettier觉得「没必要动」。两个工具的长度阈值没对齐
你把Prettier的宽度设成100,但TSLint卡的是120——这就尴尬了:行长度在100到120之间时,Prettier觉得「我觉得ok」,根本不会去格式化,但TSLint会跳出来说「超了超了」。你期望Prettier管120的线,但它只认自己的100设置啊。Prettier可能根本没在干活(潜在小坑)
虽然你说不考虑配置便利,但还是得提一嘴:如果你的Prettier配置文件没放在项目根目录,或者VSCode右下角的格式化器没选Prettier(比如选了TSLint或者默认的TypeScript formatter),那你点「格式化文档」根本就是白忙活,自然不会生效。
快速解决方向(可选)
如果想解决这个矛盾,给你几个小办法:
- 把Prettier的
print-width改成120,和TSLint的规则对齐,这样Prettier就会处理120以内的超长行了 - 不想改全局宽度的话,可以用Prettier的
overrides配置,单独给TypeScript文件设置120的宽度 - 或者直接让TSLint自己修:开自动修复(比如VSCode里开TSLint的
autoFixOnSave),让它来拆超长行——不过可能和Prettier的排版风格打架,得权衡
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

