Release 3.9.3

This commit is contained in:
fisker committed 2026-06-29 19:34:41 +08:00
1 parent a74a7b05de
commit 3732e1dee6
7 files changed
+74 -28

No files matched your search

+1 -1
View File
@@ -26,7 +26,7 @@ Don't fill the form below manually! Let a program create a report for you:
--> -->
**Prettier 3.9.1** **Prettier 3.9.3**
[Playground link](https://prettier.io/playground/#.....) [Playground link](https://prettier.io/playground/#.....)
```sh ```sh
+1 -1
View File
@@ -20,7 +20,7 @@ BEFORE SUBMITTING AN ISSUE:
**Environments:** **Environments:**
- Prettier Version: 3.9.1 - Prettier Version: 3.9.3
- Running Prettier via: <!-- CLI, Node.js API, Browser API, etc. --> - Running Prettier via: <!-- CLI, Node.js API, Browser API, etc. -->
- Runtime: <!-- Node.js v14, Chrome v83, etc. --> - Runtime: <!-- Node.js v14, Chrome v83, etc. -->
- Operating System: <!-- Windows, Linux, macOS, etc. --> - Operating System: <!-- Windows, Linux, macOS, etc. -->
+46
View File
@@ -1,3 +1,49 @@
# 3.9.3
[diff](https://github.com/prettier/prettier/compare/3.9.1...3.9.3)
#### Markdown: Fix unexpected removal of characters in liquid syntax ([#19489](https://github.com/prettier/prettier/pull/19489) by [@seiyab](https://github.com/seiyab))
<!-- prettier-ignore -->
```md
// Input
<!-- Input -->
{{ page.title
}} text
<!-- Prettier 3.9.1 -->
{{ page.title
text
<!-- Prettier 3.9.3 -->
{{ page.title
}} text
```
#### TypeScript: Allow decorators to be used with declare on class fields ([#19492](https://github.com/prettier/prettier/pull/19492) by [@evoactivity](https://github.com/evoactivity))
Extensively used within the Ember ecosystem, decorators with `declare` on class fields will ignore the babel parser error and allow Prettier to format the code without breaking it.
<!-- prettier-ignore -->
```ts
// Input
export default class ProjectStatusComponent extends Component<ProjectStatusSig> {
@service declare server: ServerService;
}
// Prettier 3.9.1
// SyntaxError: Decorators can't be used with a declare field. (2:3)
// 1 | export default class ProjectStatusComponent extends Component<ProjectStatusSig> {
//> 2 | @service declare server: ServerService;
// | ^
// 3 | }
// Prettier 3.9.3
export default class ProjectStatusComponent extends Component<ProjectStatusSig> {
@service declare server: ServerService;
}
```
# 3.9.1 # 3.9.1
[diff](https://github.com/prettier/prettier/compare/3.9.0...3.9.1) [diff](https://github.com/prettier/prettier/compare/3.9.0...3.9.1)
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "prettier", "name": "prettier",
"version": "3.10.0-dev", "version": "3.9.3",
"description": "Prettier is an opinionated code formatter", "description": "Prettier is an opinionated code formatter",
"bin": "./bin/prettier.cjs", "bin": "./bin/prettier.cjs",
"repository": "prettier/prettier", "repository": "prettier/prettier",
@@ -21,7 +21,7 @@ Required options:
- **[`parser`](options.md#parser) (or [`filepath`](options.md#file-path))**: One of these options has to be specified for Prettier to know which parser to use. - **[`parser`](options.md#parser) (or [`filepath`](options.md#file-path))**: One of these options has to be specified for Prettier to know which parser to use.
- **`plugins`**: Unlike the `format` function from the [Node.js-based API](api.md#prettierformatsource-options), this function doesn’t load plugins automatically. The `plugins` option is required because all the parsers included in the Prettier package come as plugins (for reasons of file size). These plugins are files in [https://unpkg.com/browse/prettier@3.9.1/plugins](https://unpkg.com/browse/prettier@3.9.1/plugins). Note that `estree` plugin should be loaded when printing JavaScript, TypeScript, Flow, or JSON. - **`plugins`**: Unlike the `format` function from the [Node.js-based API](api.md#prettierformatsource-options), this function doesn’t load plugins automatically. The `plugins` option is required because all the parsers included in the Prettier package come as plugins (for reasons of file size). These plugins are files in [https://unpkg.com/browse/prettier@3.9.3/plugins](https://unpkg.com/browse/prettier@3.9.3/plugins). Note that `estree` plugin should be loaded when printing JavaScript, TypeScript, Flow, or JSON.
You need to load the ones that you’re going to use and pass them to `prettier.format` using the `plugins` option. You need to load the ones that you’re going to use and pass them to `prettier.format` using the `plugins` option.
@@ -32,8 +32,8 @@ See below for examples.
### Global ### Global
```html ```html
<script src="https://unpkg.com/prettier@3.9.1/standalone.js"></script> <script src="https://unpkg.com/prettier@3.9.3/standalone.js"></script>
<script src="https://unpkg.com/prettier@3.9.1/plugins/graphql.js"></script> <script src="https://unpkg.com/prettier@3.9.3/plugins/graphql.js"></script>
<script> <script>
(async () => { (async () => {
const formatted = await prettier.format("type Query { hello: String }", { const formatted = await prettier.format("type Query { hello: String }", {
@@ -50,8 +50,8 @@ Note that the [`unpkg` field](https://unpkg.com/#examples) in Prettier’s `pack
```html ```html
<script type="module"> <script type="module">
import * as prettier from "https://unpkg.com/prettier@3.9.1/standalone.mjs"; import * as prettier from "https://unpkg.com/prettier@3.9.3/standalone.mjs";
import * as prettierPluginGraphql from "https://unpkg.com/prettier@3.9.1/plugins/graphql.mjs"; import * as prettierPluginGraphql from "https://unpkg.com/prettier@3.9.3/plugins/graphql.mjs";
const formatted = await prettier.format("type Query { hello: String }", { const formatted = await prettier.format("type Query { hello: String }", {
parser: "graphql", parser: "graphql",
@@ -64,8 +64,8 @@ Note that the [`unpkg` field](https://unpkg.com/#examples) in Prettier’s `pack
```js ```js
define([ define([
"https://unpkg.com/prettier@3.9.1/standalone.js", "https://unpkg.com/prettier@3.9.3/standalone.js",
"https://unpkg.com/prettier@3.9.1/plugins/graphql.js", "https://unpkg.com/prettier@3.9.3/plugins/graphql.js",
], async (prettier, ...plugins) => { ], async (prettier, ...plugins) => {
const formatted = await prettier.format("type Query { hello: String }", { const formatted = await prettier.format("type Query { hello: String }", {
parser: "graphql", parser: "graphql",
@@ -96,8 +96,8 @@ This syntax doesn’t necessarily work in the browser, but it can be used when b
<TabItem value="module" label="Module worker"> <TabItem value="module" label="Module worker">
```js ```js
import * as prettier from "https://unpkg.com/prettier@3.9.1/standalone.mjs"; import * as prettier from "https://unpkg.com/prettier@3.9.3/standalone.mjs";
import * as prettierPluginGraphql from "https://unpkg.com/prettier@3.9.11/plugins/graphql.mjs"; import * as prettierPluginGraphql from "https://unpkg.com/prettier@3.9.31/plugins/graphql.mjs";
const formatted = await prettier.format("type Query { hello: String }", { const formatted = await prettier.format("type Query { hello: String }", {
parser: "graphql", parser: "graphql",
@@ -110,8 +110,8 @@ const formatted = await prettier.format("type Query { hello: String }", {
```js ```js
importScripts( importScripts(
"https://unpkg.com/prettier@3.9.1/standalone.js", "https://unpkg.com/prettier@3.9.3/standalone.js",
"https://unpkg.com/prettier@3.9.1/plugins/graphql.js", "https://unpkg.com/prettier@3.9.3/plugins/graphql.js",
); );
(async () => { (async () => {
@@ -131,9 +131,9 @@ If you want to format [embedded code](options.md#embedded-language-formatting),
```html ```html
<script type="module"> <script type="module">
import * as prettier from "https://unpkg.com/prettier@3.9.1/standalone.mjs"; import * as prettier from "https://unpkg.com/prettier@3.9.3/standalone.mjs";
import * as prettierPluginBabel from "https://unpkg.com/prettier@3.9.1/plugins/babel.mjs"; import * as prettierPluginBabel from "https://unpkg.com/prettier@3.9.3/plugins/babel.mjs";
import * as prettierPluginEstree from "https://unpkg.com/prettier@3.9.1/plugins/estree.mjs"; import * as prettierPluginEstree from "https://unpkg.com/prettier@3.9.3/plugins/estree.mjs";
console.log( console.log(
await prettier.format("const html=/* HTML */ `<DIV> </DIV>`", { await prettier.format("const html=/* HTML */ `<DIV> </DIV>`", {
@@ -149,10 +149,10 @@ The HTML code embedded in JavaScript stays unformatted because the `html` parser
```html ```html
<script type="module"> <script type="module">
import * as prettier from "https://unpkg.com/prettier@3.9.1/standalone.mjs"; import * as prettier from "https://unpkg.com/prettier@3.9.3/standalone.mjs";
import * as prettierPluginBabel from "https://unpkg.com/prettier@3.9.1/plugins/babel.mjs"; import * as prettierPluginBabel from "https://unpkg.com/prettier@3.9.3/plugins/babel.mjs";
import * as prettierPluginEstree from "https://unpkg.com/prettier@3.9.1/plugins/estree.mjs"; import * as prettierPluginEstree from "https://unpkg.com/prettier@3.9.3/plugins/estree.mjs";
import * as prettierPluginHtml from "https://unpkg.com/prettier@3.9.1/plugins/html.mjs"; import * as prettierPluginHtml from "https://unpkg.com/prettier@3.9.3/plugins/html.mjs";
console.log( console.log(
await prettier.format("const html=/* HTML */ `<DIV> </DIV>`", { await prettier.format("const html=/* HTML */ `<DIV> </DIV>`", {
@@ -12,35 +12,35 @@ First, install Prettier locally:
<TabItem value="npm"> <TabItem value="npm">
```bash ```bash
npm install --save-dev --save-exact prettier@3.9.1 npm install --save-dev --save-exact prettier@3.9.3
``` ```
</TabItem> </TabItem>
<TabItem value="yarn"> <TabItem value="yarn">
```bash ```bash
yarn add --dev --exact prettier@3.9.1 yarn add --dev --exact prettier@3.9.3
``` ```
</TabItem> </TabItem>
<TabItem value="pnpm"> <TabItem value="pnpm">
```bash ```bash
pnpm add --save-dev --save-exact prettier@3.9.1 pnpm add --save-dev --save-exact prettier@3.9.3
``` ```
</TabItem> </TabItem>
<TabItem value="bun"> <TabItem value="bun">
```bash ```bash
bun add --dev --exact prettier@3.9.1 bun add --dev --exact prettier@3.9.3
``` ```
</TabItem> </TabItem>
<TabItem value="deno"> <TabItem value="deno">
```bash ```bash
deno install --dev --save-exact prettier@3.9.1 deno install --dev --save-exact prettier@3.9.3
``` ```
</TabItem> </TabItem>
@@ -46,7 +46,7 @@ Example `package.json`:
"prettier": ">=3.0.0" "prettier": ">=3.0.0"
}, },
"devDependencies": { "devDependencies": {
"prettier": "3.9.1" "prettier": "3.9.3"
} }
} }
``` ```
@@ -193,7 +193,7 @@ export default config;
"prettier": ">=3.0.0" "prettier": ">=3.0.0"
}, },
"devDependencies": { "devDependencies": {
"prettier": "3.9.1" "prettier": "3.9.3"
} }
} }
``` ```