javascript - 在 JavaScript 中美化/去除空白

标签 javascript node.js gruntjs code-formatting

我想对 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):

  1. grunt-contrib-jshint
  2. grunt-jslint
  3. grunt-linter
  4. grunt-jsbeautifier

esformatter 很强大,因为它使用了esprima解析和格式化Javascript。它是格式化程序而不是 lint,因此您可能必须在使用它之前对代码进行 lint。您可以查看其他一些使用 esprima 的格式化程序:

codepainter 使用 ECMAscript 的 JavaScript 美化器

从它支持的样式属性来看,它有一些你可以使用的特性:

  1. 缩进:{ 字符:'?',宽度:? }
  2. LastEmptyLine:存在,省略
  3. 报价类型:单、双
  4. SpaceAfterControlStatements:存在,省略
  5. SpaceAfterAnonymousFunctions:存在,省略
  6. SpacesAroundOperators:存在,省略
  7. 尾随空格:strip

esmangle ECMAScript 代码修改器/压缩器

esmangle 使用 esprima 作为解析器,使用 escodegen 作为代码生成器。见 demo .

有许多正在为 ECMAscript 开发的包,你可以查看它们 here

关于javascript - 在 JavaScript 中美化/去除空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15264463/

相关文章:

angularjs - 将 MobileServiceClient 与 AngularJS 集成

javascript - Grunt list : Put to a subdirectory the source paths

javascript - 检查网络共享中是否存在文件夹的 jQuery/AJAX 解决方案

javascript - 在 node.js 中创建链式方法?

node.js - React Native 错误 - 找不到变量 : self

javascript - 在 Node.js 中导入钩子(Hook)

javascript - GruntJS 可配置首次运行

php - 引号导致页面错误

javascript - 正则表达式匹配引号之外的字符串,如果引号不完整,则不匹配任何内容

javascript - 如何从字符串中获取 JSON 元素(包含 JSON 对象)。