Atom - JSBeautify 和 JSLint 不同意三元换行

Atom - JSBeautify and JSLint don't agree about ternary line breaking

我在 Atom 中安装了 JSLint 和 Atom-beautify(我认为这是 jsbeautify 的前端)。一般来说,这很漂亮,除了他们对三元运算符争论不休(我认为这是正确的术语)。所以如果我这样做

  var theWindow = (thisObj instanceof Panel)? thisObj: new Window("palette", thisObj.scriptTitle, undefined, {resizeable: true});

JSBeautify 会让它看起来像:

var theWindow = (thisObj instanceof Panel)
  ? thisObj
  : new Window("palette", thisObj.scriptTitle, undefined, {resizeable: true});

然后 JSLint 会抱怨错误的换行。

我查看了 JSBeautify 文档和 JSLint 文档,但我找不到任何选项来更改两者关于三元语法的行为。谁能告诉我如何更改它,这样我就不必在每次美化代码时都手动重新格式化所有三元函数?只要他们同意,我不介意哪个占上风。

你问的是 jslint(“lint”),但使用的 linter 实际上是 jshint(“hint”)

jshint

创建一个 .jshintrc 文件并添加以下规则以容忍多行字符串

{
  "multistr": true
}

您还 可能 必须将 "laxbreak" 设置为 true,这可以容忍可能不安全的换行。查看 example 了解所有可用选项

jslint

同样,您可以创建一个 .jslintrc 文件来覆盖 JSLint. Use the example 的默认选项作为参考。

只需在 .jsbeautifyrc 中添加选项 "preserve_ternary_lines":true 三元行表达式将不再被破坏。

原子美化的相关变化:atom-beautify/pull/726