Release 3.9.6

This commit is contained in:
fisker committed 2026-07-21 13:50:05 +08:00
1 parent e9107647d0
commit 8f0c95057c
7 files changed
+93 -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.5**
**Prettier 3.9.6**
[Playground link](https://prettier.io/playground/#.....)
```sh
+1 -1
View File
@@ -20,7 +20,7 @@ BEFORE SUBMITTING AN ISSUE:
**Environments:**
- Prettier Version: 3.9.5
- Prettier Version: 3.9.6
- Running Prettier via: <!-- CLI, Node.js API, Browser API, etc. -->
- Runtime: <!-- Node.js v14, Chrome v83, etc. -->
- Operating System: <!-- Windows, Linux, macOS, etc. -->
+65
View File
@@ -1,3 +1,68 @@
# 3.9.6
[diff](https://github.com/prettier/prettier/compare/3.9.5...3.9.6)
#### TypeScript: Preserve quotes for methods named `new` ([#19621](https://github.com/prettier/prettier/pull/19621) by [@kovsu](https://github.com/kovsu))
<!-- prettier-ignore -->
```tsx
// Input
interface Container {
"new"(id: string): number;
}
// Prettier 3.9.5
interface Container {
new(id: string): number;
}
// Prettier 3.9.6
interface Container {
"new"(id: string): number;
}
```
#### TypeScript: Support `import defer` ([#19624](https://github.com/prettier/prettier/pull/19624), [#19675](https://github.com/prettier/prettier/pull/19675) by [@fisker](https://github.com/fisker))
<!-- prettier-ignore -->
```tsx
// Input
import defer * as foo from "foo";
// Prettier 3.9.5
import * as foo from "foo";
// Prettier 3.9.6
import defer * as foo from "foo";
```
#### JavaScript: Added a new official plugin `@prettier/plugin-yuku` ([#19628](https://github.com/prettier/prettier/pull/19628), [#19629](https://github.com/prettier/prettier/pull/19629) by [@fisker](https://github.com/fisker))
`@prettier/plugin-yuku` is powered by [Yuku](https://yuku.fyi/) (A high-performance JavaScript/TypeScript compiler toolchain written in Zig).
This plugin includes two new parsers: `yuku` (JavaScript syntax) and `yuku-ts` (TypeScript syntax).
**To use this plugin:**
1. Install the plugin:
```bash
yarn add --dev prettier @prettier/plugin-yuku
```
2. Add it to your `.prettierrc`:
```yaml
plugins:
- "@prettier/plugin-yuku"
```
Due to package size limitations, this plugin is not bundled with the main prettier package and must be installed separately.
For more information, check [the package homepage](https://github.com/prettier/prettier/tree/main/packages/plugin-yuku).
Big thanks to [@arshad-yaseen](https://github.com/arshad-yaseen) for his excellent work.
# 3.9.5
[diff](https://github.com/prettier/prettier/compare/3.9.4...3.9.5)
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "prettier",
"version": "3.10.0-dev",
"version": "3.9.6",
"description": "Prettier is an opinionated code formatter",
"bin": "./bin/prettier.cjs",
"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.
- **`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.5/plugins](https://unpkg.com/browse/prettier@3.9.5/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.6/plugins](https://unpkg.com/browse/prettier@3.9.6/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.
@@ -32,8 +32,8 @@ See below for examples.
### Global
```html
<script src="https://unpkg.com/prettier@3.9.5/standalone.js"></script>
<script src="https://unpkg.com/prettier@3.9.5/plugins/graphql.js"></script>
<script src="https://unpkg.com/prettier@3.9.6/standalone.js"></script>
<script src="https://unpkg.com/prettier@3.9.6/plugins/graphql.js"></script>
<script>
(async () => {
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
<script type="module">
import * as prettier from "https://unpkg.com/prettier@3.9.5/standalone.mjs";
import * as prettierPluginGraphql from "https://unpkg.com/prettier@3.9.5/plugins/graphql.mjs";
import * as prettier from "https://unpkg.com/prettier@3.9.6/standalone.mjs";
import * as prettierPluginGraphql from "https://unpkg.com/prettier@3.9.6/plugins/graphql.mjs";
const formatted = await prettier.format("type Query { hello: String }", {
parser: "graphql",
@@ -64,8 +64,8 @@ Note that the [`unpkg` field](https://unpkg.com/#examples) in Prettier’s `pack
```js
define([
"https://unpkg.com/prettier@3.9.5/standalone.js",
"https://unpkg.com/prettier@3.9.5/plugins/graphql.js",
"https://unpkg.com/prettier@3.9.6/standalone.js",
"https://unpkg.com/prettier@3.9.6/plugins/graphql.js",
], async (prettier, ...plugins) => {
const formatted = await prettier.format("type Query { hello: String }", {
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">
```js
import * as prettier from "https://unpkg.com/prettier@3.9.5/standalone.mjs";
import * as prettierPluginGraphql from "https://unpkg.com/prettier@3.9.51/plugins/graphql.mjs";
import * as prettier from "https://unpkg.com/prettier@3.9.6/standalone.mjs";
import * as prettierPluginGraphql from "https://unpkg.com/prettier@3.9.61/plugins/graphql.mjs";
const formatted = await prettier.format("type Query { hello: String }", {
parser: "graphql",
@@ -110,8 +110,8 @@ const formatted = await prettier.format("type Query { hello: String }", {
```js
importScripts(
"https://unpkg.com/prettier@3.9.5/standalone.js",
"https://unpkg.com/prettier@3.9.5/plugins/graphql.js",
"https://unpkg.com/prettier@3.9.6/standalone.js",
"https://unpkg.com/prettier@3.9.6/plugins/graphql.js",
);
(async () => {
@@ -131,9 +131,9 @@ If you want to format [embedded code](options.md#embedded-language-formatting),
```html
<script type="module">
import * as prettier from "https://unpkg.com/prettier@3.9.5/standalone.mjs";
import * as prettierPluginBabel from "https://unpkg.com/prettier@3.9.5/plugins/babel.mjs";
import * as prettierPluginEstree from "https://unpkg.com/prettier@3.9.5/plugins/estree.mjs";
import * as prettier from "https://unpkg.com/prettier@3.9.6/standalone.mjs";
import * as prettierPluginBabel from "https://unpkg.com/prettier@3.9.6/plugins/babel.mjs";
import * as prettierPluginEstree from "https://unpkg.com/prettier@3.9.6/plugins/estree.mjs";
console.log(
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
<script type="module">
import * as prettier from "https://unpkg.com/prettier@3.9.5/standalone.mjs";
import * as prettierPluginBabel from "https://unpkg.com/prettier@3.9.5/plugins/babel.mjs";
import * as prettierPluginEstree from "https://unpkg.com/prettier@3.9.5/plugins/estree.mjs";
import * as prettierPluginHtml from "https://unpkg.com/prettier@3.9.5/plugins/html.mjs";
import * as prettier from "https://unpkg.com/prettier@3.9.6/standalone.mjs";
import * as prettierPluginBabel from "https://unpkg.com/prettier@3.9.6/plugins/babel.mjs";
import * as prettierPluginEstree from "https://unpkg.com/prettier@3.9.6/plugins/estree.mjs";
import * as prettierPluginHtml from "https://unpkg.com/prettier@3.9.6/plugins/html.mjs";
console.log(
await prettier.format("const html=/* HTML */ `<DIV> </DIV>`", {
@@ -12,35 +12,35 @@ First, install Prettier locally:
<TabItem value="npm">
```bash
npm install --save-dev --save-exact prettier@3.9.5
npm install --save-dev --save-exact prettier@3.9.6
```
</TabItem>
<TabItem value="yarn">
```bash
yarn add --dev --exact prettier@3.9.5
yarn add --dev --exact prettier@3.9.6
```
</TabItem>
<TabItem value="pnpm">
```bash
pnpm add --save-dev --save-exact prettier@3.9.5
pnpm add --save-dev --save-exact prettier@3.9.6
```
</TabItem>
<TabItem value="bun">
```bash
bun add --dev --exact prettier@3.9.5
bun add --dev --exact prettier@3.9.6
```
</TabItem>
<TabItem value="deno">
```bash
deno install --dev --save-exact prettier@3.9.5
deno install --dev --save-exact prettier@3.9.6
```
</TabItem>
@@ -46,7 +46,7 @@ Example `package.json`:
"prettier": ">=3.0.0"
},
"devDependencies": {
"prettier": "3.9.5"
"prettier": "3.9.6"
}
}
```
@@ -193,7 +193,7 @@ export default config;
"prettier": ">=3.0.0"
},
"devDependencies": {
"prettier": "3.9.5"
"prettier": "3.9.6"
}
}
```