object-curly-newline
強制在大括號開頭之後和結尾之前保持一致的換行
此規則報告的一些問題可使用 --fix
命令列選項自動修正
此規則已在 ESLint v8.53.0 中棄用。請使用 @stylistic/eslint-plugin-js
中的對應規則。
許多風格指南要求或禁止在大括號和其他標記內換行。
規則詳情
此規則要求或禁止在物件文字或解構賦值中的 {
與其後面的標記之間,以及 }
與其前面的標記之間換行。
選項
此規則有字串選項
"always"
要求在大括號開頭之後和結尾之前換行"never"
禁止在大括號開頭之後和結尾之前換行
或物件選項
- 如果屬性內部或屬性之間有換行,則
"multiline": true
要求換行。否則,它會禁止換行。 - 如果屬性數量至少為給定的整數,則
"minProperties"
要求換行。預設情況下,如果物件包含換行符且屬性數量少於給定的整數,也會報告錯誤。但是,如果將consistent
選項設定為true
,則會停用第二個行為 "consistent": true
(預設值)要求大括號要麼都直接包含換行符,要麼都不包含。請注意,啟用此選項也會變更minProperties
選項的行為。(請參閱上面的minProperties
以取得更多資訊)
您可以為物件文字、解構賦值以及命名匯入和匯出指定不同的選項
{
"object-curly-newline": ["error", {
"ObjectExpression": "always",
"ObjectPattern": { "multiline": true },
"ImportDeclaration": "never",
"ExportDeclaration": { "multiline": true, "minProperties": 3 }
}]
}
- 用於物件文字的
"ObjectExpression"
設定 - 用於解構賦值的物件模式的
"ObjectPattern"
設定 - 用於命名匯入的
"ImportDeclaration"
設定 - 用於命名匯出的
"ExportDeclaration"
設定
always
使用 "always"
選項時,此規則的不正確程式碼範例
/*eslint object-curly-newline: ["error", "always"]*/
let a = ;
let b = foo: 1;
let c = foo: 1, bar: 2;
let d = foo: 1,
bar: 2;
let e = foo() {
dosomething();
};
let = obj;
let f = obj;
let g, h = obj;
let i,
j = obj;
let k = function() {
dosomething();
} = obj;
使用 "always"
選項時,此規則的正確程式碼範例
/*eslint object-curly-newline: ["error", "always"]*/
let a = {
};
let b = {
foo: 1
};
let c = {
foo: 1, bar: 2
};
let d = {
foo: 1,
bar: 2
};
let e = {
foo: function() {
dosomething();
}
};
let {
} = obj;
let {
f
} = obj;
let {
g, h
} = obj;
let {
i,
j
} = obj;
let {
k = function() {
dosomething();
}
} = obj;
never
使用 "never"
選項時,此規則的不正確程式碼範例
/*eslint object-curly-newline: ["error", "never"]*/
let a =
;
let b =
foo: 1
;
let c =
foo: 1, bar: 2
;
let d =
foo: 1,
bar: 2
;
let e =
foo: function() {
dosomething();
}
;
let
= obj;
let
f
= obj;
let
g, h
= obj;
let
i,
j
= obj;
let
k = function() {
dosomething();
}
= obj;
使用 "never"
選項時,此規則的正確程式碼範例
/*eslint object-curly-newline: ["error", "never"]*/
let a = {};
let b = {foo: 1};
let c = {foo: 1, bar: 2};
let d = {foo: 1,
bar: 2};
let e = {foo: function() {
dosomething();
}};
let {} = obj;
let {f} = obj;
let {g, h} = obj;
let {i,
j} = obj;
let {k = function() {
dosomething();
}} = obj;
multiline
使用 { "multiline": true }
選項時,此規則的不正確程式碼範例
/*eslint object-curly-newline: ["error", { "multiline": true }]*/
let a =
;
let b =
foo: 1
;
let c =
foo: 1, bar: 2
;
let d = foo: 1,
bar: 2;
let e = foo: function() {
dosomething();
};
let
= obj;
let
f
= obj;
let
g, h
= obj;
let i,
j = obj;
let k = function() {
dosomething();
} = obj;
使用 { "multiline": true }
選項時,此規則的正確程式碼範例
/*eslint object-curly-newline: ["error", { "multiline": true }]*/
let a = {};
let b = {foo: 1};
let c = {foo: 1, bar: 2};
let d = {
foo: 1,
bar: 2
};
let e = {
foo: function() {
dosomething();
}
};
let {} = obj;
let {f} = obj;
let {g, h} = obj;
let {
i,
j
} = obj;
let {
k = function() {
dosomething();
}
} = obj;
minProperties
使用 { "minProperties": 2 }
選項時,此規則的不正確程式碼範例
/*eslint object-curly-newline: ["error", { "minProperties": 2 }]*/
let a =
;
let b =
foo: 1
;
let c = foo: 1, bar: 2;
let d = foo: 1,
bar: 2;
let e =
foo: function() {
dosomething();
}
;
let
= obj;
let
f
= obj;
let g, h = obj;
let i,
j = obj;
let
k = function() {
dosomething();
}
= obj;
使用 { "minProperties": 2 }
選項時,此規則的正確程式碼範例
/*eslint object-curly-newline: ["error", { "minProperties": 2 }]*/
let a = {};
let b = {foo: 1};
let c = {
foo: 1, bar: 2
};
let d = {
foo: 1,
bar: 2
};
let e = {foo: function() {
dosomething();
}};
let {} = obj;
let {f} = obj;
let {
g, h
} = obj;
let {
i,
j
} = obj;
let {k = function() {
dosomething();
}} = obj;
consistent
使用預設的 { "consistent": true }
選項時,此規則的不正確程式碼範例
/*eslint object-curly-newline: ["error", { "consistent": true }]*/
let a = {foo: 1
;
let b =
foo: 1};
let c = {foo: 1, bar: 2
;
let d =
foo: 1, bar: 2};
let e = {foo: function() {
dosomething();
}
;
let f =
foo: function() {
dosomething();}};
let {g
= obj;
let
h} = obj;
let {i, j
= obj;
let {k, l
= obj;
let
m, n} = obj;
let
o, p} = obj;
let {q = function() {
dosomething();
}
= obj;
let
r = function() {
dosomething();
}} = obj;
使用預設的 { "consistent": true }
選項時,此規則的正確程式碼範例
/*eslint object-curly-newline: ["error", { "consistent": true }]*/
let empty1 = {};
let empty2 = {
};
let a = {foo: 1};
let b = {
foo: 1
};
let c = {
foo: 1, bar: 2
};
let d = {
foo: 1,
bar: 2
};
let e = {foo: function() {dosomething();}};
let f = {
foo: function() {
dosomething();
}
};
let {} = obj;
let {
} = obj;
let {g} = obj;
let {
h
} = obj;
let {i, j} = obj;
let {
k, l
} = obj;
let {m,
n} = obj;
let {
o,
p
} = obj;
let {q = function() {dosomething();}} = obj;
let {
r = function() {
dosomething();
}
} = obj;
ObjectExpression 和 ObjectPattern
使用 { "ObjectExpression": "always", "ObjectPattern": "never" }
選項時,此規則的不正確程式碼範例
/*eslint object-curly-newline: ["error", { "ObjectExpression": "always", "ObjectPattern": "never" }]*/
let a = ;
let b = foo: 1;
let c = foo: 1, bar: 2;
let d = foo: 1,
bar: 2;
let e = foo: function() {
dosomething();
};
let
= obj;
let
f
= obj;
let
g, h
= obj;
let
i,
j
= obj;
let
k = function() {
dosomething();
}
= obj;
使用 { "ObjectExpression": "always", "ObjectPattern": "never" }
選項時,此規則的正確程式碼範例
/*eslint object-curly-newline: ["error", { "ObjectExpression": "always", "ObjectPattern": "never" }]*/
let a = {
};
let b = {
foo: 1
};
let c = {
foo: 1, bar: 2
};
let d = {
foo: 1,
bar: 2
};
let e = {
foo: function() {
dosomething();
}
};
let {} = obj;
let {f} = obj;
let {g, h} = obj;
let {i,
j} = obj;
let {k = function() {
dosomething();
}} = obj;
ImportDeclaration 和 ExportDeclaration
使用 { "ImportDeclaration": "always", "ExportDeclaration": "never" }
選項時,此規則的不正確程式碼範例
/*eslint object-curly-newline: ["error", { "ImportDeclaration": "always", "ExportDeclaration": "never" }]*/
import foo, bar from 'foo-bar';
import foo as f, baz from 'foo-bar';
import qux,
foobar from 'foo-bar';
export
foo,
bar
;
export
foo as f,
baz
from 'foo-bar';
使用 { "ImportDeclaration": "always", "ExportDeclaration": "never" }
選項時,此規則的正確程式碼範例
/*eslint object-curly-newline: ["error", { "ImportDeclaration": "always", "ExportDeclaration": "never" }]*/
import {
foo,
bar
} from 'foo-bar';
import {
baz, qux
} from 'foo-bar';
import {
foo as f,
foobar
} from 'foo-bar';
export { foo, bar } from 'foo-bar';
export { foo as f, baz } from 'foo-bar';
何時不應使用它
如果您不想強制在大括號開頭之後和結尾之前保持一致的換行,則可以安全地停用此規則。
相容性
相關規則
版本
此規則在 ESLint v2.12.0 中引入。