Igg*_*ggY 8 javascript eslint js-beautify
我正在尝试使用 ESLint 在项目中强制执行一种编码风格,但我有很多Irregular whitespace not allowed由这样的代码引起的错误:
var a = b || 10; //note the 2 spaces between || and 10
if (a === 10) { // again, 2 spaces between ) and {
Run Code Online (Sandbox Code Playgroud)
我没有找到任何方法可以轻松地为我的所有文件解决这个问题。我认为基本的正则表达式不起作用,因为在某些情况下双空格可能有效(JSON 对象的列缩进、软制表符缩进、字符串)。
我尝试了诸如 js-beautify 之类的工具,但没有找到解决此问题的任何选项。有什么工具可以帮助我吗?
Moh*_*lal 11
您可以使用vscode的扩展fix-irregular-whitspace
\n它的工作原理是用普通空格替换代码中的所有不间断空格。
\n命令托盘(CTRL + SHIFT + P)和:
\n> Fix irregular whitespace in workspace\nRun Code Online (Sandbox Code Playgroud)\n对于整个工作区(项目、文件夹)
\n\n> Fix irregular whitespace in current file\nRun Code Online (Sandbox Code Playgroud)\n对于当前文件!
\n一旦执行!整个过程在后台运行!
\n命令运行并完成后!您收到此通知!
\n\n如果你没有使用 vscode!然后就可以通过vscode来使用了!您可以使用 vscode 轻松打开您的项目文件夹!安装扩展!并简单地运行命令!魔法完成了!
\n即使我正在使用其他 IDE,我也使用 vscode 来做很多事情(比如代码块一次(我必须这样做!帮助朋友!))!
\nVSCode 太强大了!在许多方面!
\nhttps://eslint.org/docs/rules/no-irregular-whitespace
\n一种类似无效的空白,不是正常的制表符和空格。其中一些字符可能会在现代浏览器中引起问题,而另一些字符则需要调试才能发现。(我有一次糟糕的经历,我彻底抓破了头!最后我很幸运,我使用了某个编辑器,为我发现了糟糕的空白!这就是原因)!
\n祝我们 eslint 检测到它们!还有这么多的编辑器和工具!
\nEslint 将这些空间视为不规则空间
\n\\u000B - Line Tabulation (\\v) - <VT>\n\\u000C - Form Feed (\\f) - <FF>\n\\u00A0 - No-Break Space - <NBSP>\n\\u0085 - Next Line\n\\u1680 - Ogham Space Mark\n\\u180E - Mongolian Vowel Separator - <MVS>\n\\ufeff - Zero Width No-Break Space - <BOM>\n\\u2000 - En Quad\n\\u2001 - Em Quad\n\\u2002 - En Space - <ENSP>\n\\u2003 - Em Space - <EMSP>\n\\u2004 - Tree-Per-Em\n\\u2005 - Four-Per-Em\n\\u2006 - Six-Per-Em\n\\u2007 - Figure Space\n\\u2008 - Punctuation Space - <PUNCSP>\n\\u2009 - Thin Space\n\\u200A - Hair Space\n\\u200B - Zero Width Space - <ZWSP>\n\\u2028 - Line Separator\n\\u2029 - Paragraph Separator\n\\u202F - Narrow No-Break Space\n\\u205f - Medium Mathematical Space\n\\u3000 - Ideographic Space\nRun Code Online (Sandbox Code Playgroud)\n关于它们可能导致的问题的示例和见解:
\n\n\n无效或不规则的空格会导致 ECMAScript 5 解析器出现问题,并且还会使代码更难以调试,其性质类似于混合制表符和空格。
\n
\n\n程序员可能会错误地输入各种空白字符,例如通过复制或键盘快捷键输入。例如,在 macOS 上按 Alt + Space 会添加不间断的空格字符。
\n
\n\n解决此问题的一个简单方法是从头开始重写有问题的行。这也可能是文本编辑器引入的问题:如果重写该行不能解决问题,请尝试使用其他编辑器。
\n
这些空间导致的已知问题:
\n零宽度空间
\n行分隔符
\n#\xc2\xa0Ok 否
\n是的,这是什么,好吧,不!你不知道吗!?
\n那里有一个我创造的不规则空间!
\n在哪儿 !?在这里> #<irregular space>OK<normal space>NO!
我是按字面意思打字的# + ALT + SPACE + "OK NO"!速度就是原因!我做的很快!我知道这个伎俩!我可以随意创造这种不规则的空间类型!
您想了解更多!在这里查看我关于不规则空间的文章:
\n\n检查如何创建它们部分!讲的是markdown的问题!你可以在stackoverflow中看到这一点!README.md文件写入!如果您已经遇到了这么多问题!慢点写#+空格应该就可以了!
\n这是我故意做的另一个不规则空间
\n\n#\xc2\xa0+空间快!然后删除#!
\n事实上,要创建不规则的空间,我们只需要ALT + SPACE!这就是它的原理!
你可以看到编辑器检测到它(vscode 这里使用 eslint linter)!
\neslint lint 规则的修复实现实际上已经制定出来了!过几天就会出来了!它将作为eslint 插件(npm install + 添加到扩展)(允许支持旧的 eslint 版本)!然后是新版本的 eslint!它也可能进入核心规则!很快再检查一次!我也会更新这个部分!有完整的细节!
\n如果您喜欢,可以在本期查看https://github.com/eslint/eslint/issues/14073
\n如果您正在寻找一种在命令行上执行此操作的方法,您可以通过管道将awk或 的输出传输ts到tee(如果它们在您的操作系统上可用)。以下选项将标准化文件中的空格,并覆盖现有文件:
(警告!这将覆盖 的内容file.js)
选项#1: tr -s " " < file.js | tee file.js
选项#2: awk '{$2=$2};1' file.js | tee file.js
假设您有一个file.js包含以下内容的文件:
// there are lots of spaces
// in this file
var a = b || 10;
if ( a === 10 ) {
// ....
}
Run Code Online (Sandbox Code Playgroud)
运行上述命令之一后,该file.js文件将如下所示:
// there are lots of spaces
// in this file
var a = b || 10;
if ( a === 10 ) {
// ....
}
Run Code Online (Sandbox Code Playgroud)
如果您只想将更正后的空白内容的结果打印到终端而不覆盖文件,则不要将输出通过管道传输到tee,如下所示:
选项#1: tr -s " " < file.js
选项#2: awk '{$2=$2};1' file.js
否则,如果要将内容输出到新文件:
选项#1: tr -s " " < file.js | tee newfile.js
选项#2: awk '{$2=$2};1' file.js | tee newfile.js
输出到同一文件
选项#1: tr -s " " < file.js | tee file.js
选项#2: awk '{$2=$2};1' file.js | tee file.js
话虽如此,在信任源代码文件上的命令行操作之前,您应该始终非常谨慎并进行详细的测试。
查看这篇文章以获取更好的详细信息和更多选项。
| 归档时间: |
|
| 查看次数: |
16863 次 |
| 最近记录: |