我想对 JavaScript 中的空白进行 lint(甚至可能是自动)美化。问题是是否有任何工具可以做到这一点。
我知道 JSLint 和 JSHint,例如,可以检查缩进和尾随空格,这都很好,但这些不是您可能拥有的唯一类型的空格。
我也想检查的是:
- 在某些结构之前或之后是否有空行?
- 是否有不止一个空行?
- 某些事物之间是否有单个空格(由 JSLint/JSHint 部分检查)?
- ...
基本上,我希望拥有现代 IDE(如 Visual Studio 和 Resharper)所能做的一切,但作为可以嵌入到 Grunt 中的命令行工具。
我发现在这个方向上做的唯一事情是esformatter ,但根据其网站
is still on early development and is missing support for many important features.
当然,如果有更成熟的东西就好了。
有什么想法吗?
最佳答案
更新 6 个月和大量搜索后
我建议你看看 eslint 。它建立在可插拔 linting 规则的概念之上,这正是您所要求的。你可以使用 grunt-plugin grunt-eslint 指定 linting 规则并使其自动化。它仍然是 pre-alpha,但比 esformatter 发展得更快。它有一个明确定义的 roadmap .
原创
您提出的问题没有简单的答案。所以让我把它分解并分部分回答。您需要在命令行上嵌入现代 IDE 的功能,例如 Visual Studio 和 Resharper,您可以将其嵌入到 Grunt 中。对您(可能)想要的功能进行广泛分类:
- 编译器/调试器
- 在运行之前/期间测试错误。
- 检测/标记可疑代码
- 遵循编码标准,有助于发现可能的缺陷。
- 格式化器/美化器
- 使代码可读
在制作 IDE 时,请牢记以上所有内容。因此,很难在 IDE 中为 node 找到一个同样强大的格式化程序。
调试器
我知道可以为 Node 使用 eclipse 调试器。检查这个link
lint/格式化程序
对于 grunt(基于 JSLint/JSHint):
esformatter
很强大,因为它使用了esprima解析和格式化Javascript。它是格式化程序而不是 lint,因此您可能必须在使用它之前对代码进行 lint。您可以查看其他一些使用 esprima
的格式化程序:
codepainter 使用 ECMAscript 的 JavaScript 美化器
从它支持的样式属性来看,它有一些你可以使用的特性:
- 缩进:{ 字符:'?',宽度:? }
- LastEmptyLine:存在,省略
- 报价类型:单、双
- SpaceAfterControlStatements:存在,省略
- SpaceAfterAnonymousFunctions:存在,省略
- SpacesAroundOperators:存在,省略
- 尾随空格:strip
esmangle ECMAScript 代码修改器/压缩器
esmangle
使用 esprima
作为解析器,使用 escodegen
作为代码生成器。见 demo .
有许多正在为 ECMAscript 开发的包,你可以查看它们 here
关于javascript - 在 JavaScript 中美化/去除空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15264463/