如何让 Prettier 忽略一段代码?
How to make Prettier to ignore a block of code?
假设我们有一行代码:
const a = 'a'; const b = 'b';
我们不希望它成为 Prettier 的格式化程序。
到目前为止我尝试过的:
1)
// prettier-ignore
const a = 'a'; const b = 'b';
// prettier-ignore-start
const a = 'a'; const b = 'b';
// prettier-ignore-end
在这两种情况下,它都被转换为:
const a = 'a';
const b = 'b';
那么如何忽略一段代码呢?
// prettier-ignore
在这里不起作用的原因是// prettier-ignore
将从格式化中排除抽象语法树中的下一个节点(参见https://prettier.io/docs/en/ignore.html).
在您的情况下,下一个节点只会是 const a = 'a';
。例如,
// prettier-ignore
const a =
'a';
格式化后会保留
如果你想在一行中保留两个分配而不改变整个文件的更漂亮的配置,你可以使用 destructuring assignment 如果你使用的是 es6 或 node:
const [a, b] = ["a", "b"];
有时可以将多个语句包装在一个块中,并在其前面加上 // prettier-ignore
:
// prettier-ignore
{
abcRouter('/api/abc', server);
xRouter ('/api/x', server);
}
当然,这对于块级 const
声明没有意义,但您写的不是您的实际代码,只是一个示例。所以这是一种在某些情况下但并非在所有情况下都有效的解决方案。总的来说,策略是将多个东西包装在一个东西中,可以是 prettier-ignore
d.
另一种选择是将所有您不想格式化的代码(例如,因为它是生成的)移动到 .prettierignore
排除的单独文件中。
支持 prettier-ignore-start
和 prettier-ignore-end
only in Markdown。
你可以忽略整个方法
// prettier-ignore
function myFunc() {
const a = 'a'; const b = 'b';
return a + b;
}
其实我只试过打字稿。但我认为应该也适用于 JS。
您可以忽略目前不支持的代码块,您的选择是仅使用 // prettier-ignore
示例如下:
// prettier-ignore
const a = 'a';
const b = 'b';
// prettier-ignore
function xyz() {
console.log({a, b})
}
很烂,但目前不支持。
虽然这对 OP 的示例不起作用,但一种选择是将 prettier-ignore
注释添加到要忽略的每一行的 开头 ,使用 /* */
注释样式,例如
/* prettier-ignore */ import { SomeTypeA, SomeTypeB, SomeTypeC } from './some-long-folder-name/super-long-import';
/* prettier-ignore */ import { someFnA, someFnB, someFnC, } from './another-long-folder-name/super-long-import';
在我看来,这比其他选择更容易让人眼前一亮;
让 prettier 重新格式化导入:
import {
SomeTypeA,
SomeTypeB,
SomeTypeC,
} from './some-long-folder-name/super-long-import';
import {
someFnA,
someFnB,
someFnC,
} from './another-long-folder-name/super-long-import';
在每个导入上方指定 // prettier-ignore
注释:
// prettier-ignore
import { SomeTypeA, SomeTypeB, SomeTypeC } from './some-long-folder-name/super-long-import';
// prettier-ignore
import { someFnA, someFnB, someFnC, } from './another-long-folder-name/super-long-import';
假设我们有一行代码:
const a = 'a'; const b = 'b';
我们不希望它成为 Prettier 的格式化程序。
到目前为止我尝试过的:
1)
// prettier-ignore
const a = 'a'; const b = 'b';
// prettier-ignore-start
const a = 'a'; const b = 'b';
// prettier-ignore-end
在这两种情况下,它都被转换为:
const a = 'a';
const b = 'b';
那么如何忽略一段代码呢?
// prettier-ignore
在这里不起作用的原因是// prettier-ignore
将从格式化中排除抽象语法树中的下一个节点(参见https://prettier.io/docs/en/ignore.html).
在您的情况下,下一个节点只会是 const a = 'a';
。例如,
// prettier-ignore
const a =
'a';
格式化后会保留
如果你想在一行中保留两个分配而不改变整个文件的更漂亮的配置,你可以使用 destructuring assignment 如果你使用的是 es6 或 node:
const [a, b] = ["a", "b"];
有时可以将多个语句包装在一个块中,并在其前面加上 // prettier-ignore
:
// prettier-ignore
{
abcRouter('/api/abc', server);
xRouter ('/api/x', server);
}
当然,这对于块级 const
声明没有意义,但您写的不是您的实际代码,只是一个示例。所以这是一种在某些情况下但并非在所有情况下都有效的解决方案。总的来说,策略是将多个东西包装在一个东西中,可以是 prettier-ignore
d.
另一种选择是将所有您不想格式化的代码(例如,因为它是生成的)移动到 .prettierignore
排除的单独文件中。
prettier-ignore-start
和 prettier-ignore-end
only in Markdown。
你可以忽略整个方法
// prettier-ignore
function myFunc() {
const a = 'a'; const b = 'b';
return a + b;
}
其实我只试过打字稿。但我认为应该也适用于 JS。
您可以忽略目前不支持的代码块,您的选择是仅使用 // prettier-ignore
示例如下:
// prettier-ignore
const a = 'a';
const b = 'b';
// prettier-ignore
function xyz() {
console.log({a, b})
}
很烂,但目前不支持。
虽然这对 OP 的示例不起作用,但一种选择是将 prettier-ignore
注释添加到要忽略的每一行的 开头 ,使用 /* */
注释样式,例如
/* prettier-ignore */ import { SomeTypeA, SomeTypeB, SomeTypeC } from './some-long-folder-name/super-long-import';
/* prettier-ignore */ import { someFnA, someFnB, someFnC, } from './another-long-folder-name/super-long-import';
在我看来,这比其他选择更容易让人眼前一亮;
让 prettier 重新格式化导入:
import {
SomeTypeA,
SomeTypeB,
SomeTypeC,
} from './some-long-folder-name/super-long-import';
import {
someFnA,
someFnB,
someFnC,
} from './another-long-folder-name/super-long-import';
在每个导入上方指定 // prettier-ignore
注释:
// prettier-ignore
import { SomeTypeA, SomeTypeB, SomeTypeC } from './some-long-folder-name/super-long-import';
// prettier-ignore
import { someFnA, someFnB, someFnC, } from './another-long-folder-name/super-long-import';