2015-12-09 382 views
4

我试图用ESLint执行上一个项目的编码风格,我有许多错误Irregular whitespace not allowed造成这样的代码之一:ESLint:解决快速路“不规则的空白不允许”

var a = b || 10; //note the 2 spaces between || and 10 
if (a === 10) { // again, 2 spaces between) and { 

我没有找到任何方法可以轻松解决所有文件中的这个问题。 我认为基本的正则表达式不起作用,因为双空格在某些情况下可能有效(JSON对象的列缩进,带有软标签的缩进,字符串缩进)。

我尝试了诸如js-beautify这样的工具,但没有找到任何选项来解决这个问题。有没有可以帮助我的工具?

+0

当我粘贴代码到http://danml.com/slim/,然后单击工具>美化,它消除了额外的空间。 – dandavis

+0

我应该指定我正在寻找命令行工具 – IggY

+0

您使用的是什么eslint规则? – Gyandeep

回答

1

如果你正在寻找一种方式来做到这一点在命令行中,你可以管的awkts输出到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 ) { 
//  .... 
} 

运行上面的命令之一后,file.js文件将是这样的:

// there are lots of spaces 
// in this file 
var a = b || 10; 
if (a === 10) { 
// .... 
} 

如果你只是想打印的修正空白内容到终端的结果不覆盖文件,只是不管道输出到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

话虽这么说,你应该永远是超级小心,你在你的源代码文件信任的命令行操作之前进行详细的测试。

检查更好的细节和更多的选择了this post