惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cloudbric
Cloudbric
有赞技术团队
有赞技术团队
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
T
Threat Research - Cisco Blogs
L
LangChain Blog
Simon Willison's Weblog
Simon Willison's Weblog
Project Zero
Project Zero
Latest news
Latest news
S
Schneier on Security
Cisco Talos Blog
Cisco Talos Blog
MyScale Blog
MyScale Blog
C
Check Point Blog
IT之家
IT之家
P
Palo Alto Networks Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
CERT Recently Published Vulnerability Notes
Scott Helme
Scott Helme
The Hacker News
The Hacker News
C
CXSECURITY Database RSS Feed - CXSecurity.com
G
Google Developers Blog
T
Tor Project blog
T
Threatpost
D
DataBreaches.Net
博客园 - 【当耐特】
酷 壳 – CoolShell
酷 壳 – CoolShell
T
Troy Hunt's Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Vercel News
Vercel News
云风的 BLOG
云风的 BLOG
NISL@THU
NISL@THU
P
Privacy & Cybersecurity Law Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
C
Cisco Blogs
博客园_首页
S
Securelist
T
The Exploit Database - CXSecurity.com
Last Week in AI
Last Week in AI
量子位
U
Unit 42
Know Your Adversary
Know Your Adversary
Hugging Face - Blog
Hugging Face - Blog
S
Security Affairs
Google Online Security Blog
Google Online Security Blog
Hacker News: Ask HN
Hacker News: Ask HN
Webroot Blog
Webroot Blog
S
SegmentFault 最新的问题
Engineering at Meta
Engineering at Meta
N
News and Events Feed by Topic
P
Proofpoint News Feed
阮一峰的网络日志
阮一峰的网络日志

Prettier Blog

Prettier 3.9: Major parser upgrades and Formatting improvements Prettier 3.8: Support for Angular v21.1 Prettier 3.7: Improved formatting consistency and new plugin features! Prettier 3.6: Experimental fast CLI and new OXC and Hermes plugins! Prettier 3.5: New objectWrap option, experimentalOperatorPosition option and TS config file support! Prettier 3.4: A lot of bug fixes Prettier 3.3: New Flow features and a lot of bug fixes Prettier 3.2: Support JSONC and Angular’s ICU expression Prettier's CLI: A Performance Deep Dive $20k Bounty was Claimed! Prettier 3.1: New experimental ternaries formatting and Angular control flow syntax! A curious case of the ternaries Prettier 3.0: Hello, ECMAScript Modules! Prettier 2.8: improve --cache CLI option and TypeScript 4.9 satisfies operator! Prettier 2.7: new --cache CLI option and TypeScript 4.7 syntax! Prettier 2.6: new singleAttributePerLine option and new JavaScript features! Prettier begins paying maintainers Prettier 2.5: TypeScript 4.5 and MDX v2 comment syntax! Prettier 2.3. In which assignments are consistent, short keys non-breaking, and Handlebars official Prettier for Ruby goes v1.0 🎉
Prettier 2.4: new bracketSameLine option and TypeScript 4.4 support!
Sosuke Suzuki · 2021-09-09 · via Prettier Blog

This release renames the jsxBracketSameLine option to bracketSameLine, which supports HTML, Vue, and Angular in addition to JSX. The old name has been deprecated.

We’ve also added support for TypeScript 4.4, including new syntax features such as class static blocks.

If you enjoy Prettier and would like to support our work, consider sponsoring us directly via our OpenCollective or by sponsoring the projects we depend on, including typescript-eslint, remark, and Babel.

Highlights

TypeScript

Support TypeScript 4.4 (#11426 by @sosukesuzuki)

Support TypeScript 4.4!

static Blocks in Classes

Class Static Blocks syntax is a Stage 4 ECMAScript proposal. See https://github.com/tc39/proposal-class-static-block for more details.

// Input

class Foo {

static count = 0;

// This is a static block:

static {

if (someCondition()) {

Foo.count++;

}

}

}

// Prettier 2.3

SyntaxError: Declaration expected. (5:9)

3 |

4 | // This is a static block:

> 5 | static {

| ^

6 | if (someCondition()) {

7 | Foo.count++;

8 | }

// Prettier 2.4

class Foo {

static count = 0;

// This is a static block:

static {

if (someCondition()) {

Foo.count++;

}

}

}

HTML

Replace jsxBracketSameLine option with bracketSameLine option (#11006 by @kurtztech)

Deprecate the jsxBracketSameLine option in favour of the new bracketSameLine option that will work for HTML, Angular, Vue, and JSX.

<!-- Input -->

<div id="foo-bar-baz"

class="bar-foo-baz"

title="a sample title"

data-foo="bar"

data-bar="baz">lorem ipsum dolor sit amet</div>

<!-- Prettier 2.3 -->

<div

id="foo-bar-baz"

class="bar-foo-baz"

title="a sample title"

data-foo="bar"

data-bar="baz"

>

lorem ipsum dolor sit amet

</div>

<!-- Prettier 2.4 -->

<!-- Options: `{bracketSameLine: true}` -->

<div

id="foo-bar-baz"

class="bar-foo-baz"

title="a sample title"

data-foo="bar"

data-bar="baz">

lorem ipsum dolor sit amet

</div>

Other Changes

JavaScript

Support parenthesized tagged template literals for styled components (#11246 by @sosukesuzuki)

// Input

const StyledComponent =

/** @type {import('styled-components').ThemedStyledFunction<'div',null,{overlap: boolean}>} */

(styled.div)`

position: fixed;

color: red;

`;

// Prettier 2.3

const StyledComponent =

/** @type {import('styled-components').ThemedStyledFunction<'div',null,{overlap: boolean}>} */

(styled.div)`

position: fixed;

color: red;

`;

// Prettier 2.4

const StyledComponent =

/** @type {import('styled-components').ThemedStyledFunction<'div',null,{overlap: boolean}>} */

(styled.div)`

position: fixed;

color: red;

`;

Count correctly regex literals in method chain arguments (#11299 by @sosukesuzuki)

// Input

foo1(/𠮟𠮟𠮟/).foo2(bar).foo3(baz);

foo1(/叱叱叱/).foo2(bar).foo3(baz);

// Prettier 2.3

foo1(/𠮟𠮟𠮟/)

.foo2(bar)

.foo3(baz);

foo1(/叱叱叱/).foo2(bar).foo3(baz);

// Prettier 2.4

foo1(/𠮟𠮟𠮟/)

.foo2(bar)

.foo3(baz);

foo1(/叱叱叱/)

.foo2(bar)

.foo3(baz);

Support hack-style pipeline proposal (#11335 by @sosukesuzuki)

The proposed hack-style pipeline syntax is now supported by Prettier. We are using % as the topic token, following the official explainer — although this may change in future releases as the proposal progresses.

As part of this change, support for the “smart” pipeline syntax has been removed. See our policy on non-standardized syntax for the rationale behind this decision.

// Input

const foo = fn() |> fn1(%) |> fn2(%);

// Prettier 2.3

SyntaxError: Unexpected token (1:25)

> 1 | const foo = fn() |> fn1(%) |> fn2(%);

| ^

2 |

// Prettier 2.4

const foo = fn() |> fn1(%) |> fn(%);

TypeScript

Fix formatting intersection types that include mapped types (#11247 by @sosukesuzuki)

// Input

type Example = {

[A in B]: T;

} & {

[A in B]: T;

};

// Prettier 2.3

type Example = {

[A in B]: T;

} &

{

[A in B]: T;

};

// Prettier 2.4

type Example = {

[A in B]: T;

} & {

[A in B]: T;

};

Flow

Always put a semicolon before Flow variance sigils (#11398 by @noppa)

// Input

class A {

+one = function() {};

-two = val();

+#privOne = val();

static +#privTwo = val();

}

// Prettier 2.3

class A {

+one = function() {}

-two = val()

+#privOne = val()

static +#privTwo = val()

}

// Prettier 2.4

class A {

+one = function() {};

-two = val();

+#privOne = val()

static +#privTwo = val()

}

SCSS

Consistently quote Sass modules strings (#11461 by @niksy)

// Input

@use "sass:math";

@forward "list";

// Prettier 2.3

@use "sass:math";

@forward "list";

// Prettier 2.4

@use 'sass:math';

@forward 'list';

CLI

Infer parser for .stylelintrc (#10924 by @SevenOutman)

A .stylelintrc file (without extension) is handled using json and yaml parsers.