Skip to content

Commit

Permalink
Release 3.1.1
Browse files Browse the repository at this point in the history
  • Loading branch information
sosukesuzuki committed Dec 10, 2023
1 parent c97480c commit b86701d
Show file tree
Hide file tree
Showing 8 changed files with 181 additions and 37 deletions.
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/formatting.md
Expand Up @@ -26,7 +26,7 @@ Don't fill the form below manually! Let a program create a report for you:
-->

**Prettier 3.1.0**
**Prettier 3.1.1**
[Playground link](https://prettier.io/playground/#.....)

```sh
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/integration.md
Expand Up @@ -20,7 +20,7 @@ BEFORE SUBMITTING AN ISSUE:

**Environments:**

- Prettier Version: 3.1.0
- Prettier Version: 3.1.1
- Running Prettier via: <!-- CLI, Node.js API, Browser API, etc. -->
- Runtime: <!-- Node.js v14, Chrome v83, etc. -->
- Operating System: <!-- Windows, Linux, macOS, etc. -->
Expand Down
144 changes: 144 additions & 0 deletions CHANGELOG.md
@@ -1,3 +1,147 @@
# 3.1.1

[diff](https://github.com/prettier/prettier/compare/3.1.0...3.1.1)

#### Fix config file search ([#15363](https://github.com/prettier/prettier/pull/15363) by [@fisker](https://github.com/fisker))

Previously, we start search for config files from the filePath as a directory, if it happened to be a directory and contains config file, it will be used by mistake.

```text
├─ .prettierrc
└─ test.js (A directory)
└─ .prettierrc
```

```js
// Prettier 3.1.0
await prettier.resolveConfigFile(new URL("./test.js", import.meta.url));
// <CWD>/test.js/.prettierrc

// Prettier 3.1.1
await prettier.resolveConfigFile(new URL("./test.js", import.meta.url));
// <CWD>/.prettierrc
```

#### Skip explicitly passed symbolic links with `--no-error-on-unmatched-pattern` ([#15533](https://github.com/prettier/prettier/pull/15533) by [@sanmai-NL](https://github.com/sanmai-NL))

Since Prettier v3, we stopped following symbolic links, however in some use cases, the symbolic link patterns can't be filtered out, and there is no way to prevent Prettier from throwing errors.

In Prettier 3.1.1, you can use `--no-error-on-unmatched-pattern` to simply skip symbolic links.

#### Consistently use tabs in ternaries when `useTabs` is `true` ([#15662](https://github.com/prettier/prettier/pull/15662) by [@auvred](https://github.com/auvred))

<!-- prettier-ignore -->
```jsx
// Input
aaaaaaaaaaaaaaa
? bbbbbbbbbbbbbbbbbb
: ccccccccccccccc
? ddddddddddddddd
: eeeeeeeeeeeeeee
? fffffffffffffff
: gggggggggggggggg;

// Prettier 3.1.0
aaaaaaaaaaaaaaa
? bbbbbbbbbbbbbbbbbb
: ccccccccccccccc
? ddddddddddddddd
: eeeeeeeeeeeeeee
? fffffffffffffff
: gggggggggggggggg;

// Prettier 3.1.1
aaaaaaaaaaaaaaa
? bbbbbbbbbbbbbbbbbb
: ccccccccccccccc
? ddddddddddddddd
: eeeeeeeeeeeeeee
? fffffffffffffff
: gggggggggggggggg;
```

#### Improve config file search ([#15663](https://github.com/prettier/prettier/pull/15663) by [@fisker](https://github.com/fisker))

The Prettier config file search performance has been improved by more effective cache strategy.

#### Fix unstable and ugly formatting for comments in destructuring patterns ([#15708](https://github.com/prettier/prettier/pull/15708) by [@sosukesuzuki](https://github.com/sosukesuzuki))

<!-- prettier-ignore -->
```tsx
// Input
const {
foo,
// bar
// baz
}: Foo = expr;

// Prettier 3.1.0
const {
foo1,
} // bar
// baz
: Foo = expr;

// Prettier 3.1.0 second output
const {
foo1, // bar
} // baz
: Foo = expr;

// Prettier 3.1.1
const {
foo1,
// bar
// baz
}: Foo = expr;
```

#### Support "Import Attributes" ([#15718](https://github.com/prettier/prettier/pull/15718) by [@fisker](https://github.com/fisker))

[TypeScript 5.3](https://devblogs.microsoft.com/typescript/announcing-typescript-5-3/#import-attributes) supports the latest updates to the [import attributes](https://github.com/tc39/proposal-import-attributes) proposal.

```tsx
import something from "./something.json" with { type: "json" };
```

#### Fix false claim in docs that cursorOffset is incompatible with rangeStart/rangeEnd ([#15750](https://github.com/prettier/prettier/pull/15750) by [@ExplodingCabbage](https://github.com/ExplodingCabbage))

The cursorOffset option has in fact been compatible with rangeStart/rangeEnd for over 5 years, thanks to work by @ds300. However, Prettier's documentation (including the CLI `--help` text) continued to claim otherwise, falsely. The documentation is now fixed.

#### Keep curly braces and `from` keyword in empty `import` statements ([#15756](https://github.com/prettier/prettier/pull/15756) by [@fisker](https://github.com/fisker))

<!-- prettier-ignore -->
```js
// Input
import { } from 'foo';
import { /* comment */ } from 'bar';

// Prettier 3.1.0
import {} from "foo";
import /* comment */ "bar";

// Prettier 3.1.1
import {} from "foo";
import {} from /* comment */ "bar";
```

#### Keep empty import attributes and assertions ([#15757](https://github.com/prettier/prettier/pull/15757) by [@fisker](https://github.com/fisker))

<!-- prettier-ignore -->
```js
// Input
import foo from "foo" with {};
import bar from "bar" assert {};

// Prettier 3.1.0
import foo from "foo";
import bar from "bar";

// Prettier 3.1.1
import foo from "foo" with {};
import bar from "bar" assert {};
```

# 3.1.0

[diff](https://github.com/prettier/prettier/compare/3.0.3...3.1.0)
Expand Down
32 changes: 16 additions & 16 deletions docs/browser.md
Expand Up @@ -18,7 +18,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.1.0/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.1.1/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.

Expand All @@ -29,8 +29,8 @@ See below for examples.
### Global

```html
<script src="https://unpkg.com/prettier@3.1.0/standalone.js"></script>
<script src="https://unpkg.com/prettier@3.1.0/plugins/graphql.js"></script>
<script src="https://unpkg.com/prettier@3.1.1/standalone.js"></script>
<script src="https://unpkg.com/prettier@3.1.1/plugins/graphql.js"></script>
<script>
(async () => {
const formatted = await prettier.format("type Query { hello: String }", {
Expand All @@ -47,8 +47,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.1.0/standalone.mjs";
import prettierPluginGraphql from "https://unpkg.com/prettier@3.1.0/plugins/graphql.mjs";
import * as prettier from "https://unpkg.com/prettier@3.1.1/standalone.mjs";
import prettierPluginGraphql from "https://unpkg.com/prettier@3.1.1/plugins/graphql.mjs";
const formatted = await prettier.format("type Query { hello: String }", {
parser: "graphql",
Expand All @@ -61,8 +61,8 @@ Note that the [`unpkg` field](https://unpkg.com/#examples) in Prettier’s `pack

```js
define([
"https://unpkg.com/prettier@3.1.0/standalone.js",
"https://unpkg.com/prettier@3.1.0/plugins/graphql.js",
"https://unpkg.com/prettier@3.1.1/standalone.js",
"https://unpkg.com/prettier@3.1.1/plugins/graphql.js",
], async (prettier, ...plugins) => {
const formatted = await prettier.format("type Query { hello: String }", {
parser: "graphql",
Expand Down Expand Up @@ -90,8 +90,8 @@ This syntax doesn’t necessarily work in the browser, but it can be used when b
### Worker

```js
importScripts("https://unpkg.com/prettier@3.1.0/standalone.js");
importScripts("https://unpkg.com/prettier@3.1.0/plugins/graphql.js");
importScripts("https://unpkg.com/prettier@3.1.1/standalone.js");
importScripts("https://unpkg.com/prettier@3.1.1/plugins/graphql.js");

(async () => {
const formatted = await prettier.format("type Query { hello: String }", {
Expand All @@ -107,9 +107,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.1.0/standalone.mjs";
import prettierPluginBabel from "https://unpkg.com/prettier@3.1.0/plugins/babel.mjs";
import prettierPluginEstree from "https://unpkg.com/prettier@3.1.0/plugins/estree.mjs";
import * as prettier from "https://unpkg.com/prettier@3.1.1/standalone.mjs";
import prettierPluginBabel from "https://unpkg.com/prettier@3.1.1/plugins/babel.mjs";
import prettierPluginEstree from "https://unpkg.com/prettier@3.1.1/plugins/estree.mjs";
console.log(
await prettier.format("const html=/* HTML */ `<DIV> </DIV>`", {
Expand All @@ -125,10 +125,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.1.0/standalone.mjs";
import prettierPluginBabel from "https://unpkg.com/prettier@3.1.0/plugins/babel.mjs";
import prettierPluginEstree from "https://unpkg.com/prettier@3.1.0/plugins/estree.mjs";
import prettierPluginHtml from "https://unpkg.com/prettier@3.1.0/plugins/html.mjs";
import * as prettier from "https://unpkg.com/prettier@3.1.1/standalone.mjs";
import prettierPluginBabel from "https://unpkg.com/prettier@3.1.1/plugins/babel.mjs";
import prettierPluginEstree from "https://unpkg.com/prettier@3.1.1/plugins/estree.mjs";
import prettierPluginHtml from "https://unpkg.com/prettier@3.1.1/plugins/html.mjs";
console.log(
await prettier.format("const html=/* HTML */ `<DIV> </DIV>`", {
Expand Down
2 changes: 1 addition & 1 deletion package.json
@@ -1,6 +1,6 @@
{
"name": "prettier",
"version": "3.2.0-dev",
"version": "3.1.1",
"description": "Prettier is an opinionated code formatter",
"bin": "./bin/prettier.cjs",
"repository": "prettier/prettier",
Expand Down
2 changes: 1 addition & 1 deletion website/versioned_docs/version-stable/api.md
Expand Up @@ -67,7 +67,7 @@ If `options.editorconfig` is `true` and an [`.editorconfig` file](https://editor

The promise will be rejected if there was an error parsing the configuration file.

The search starts at `process.cwd()`, or at `fileUrlOrPath` if provided. Please see the [lilconfig docs](https://github.com/antonk52/lilconfig) for details on how the resolving works.
The search starts at `process.cwd()`, or at the directory of `fileUrlOrPath` if provided.

```js
const configFile = await prettier.resolveConfigFile(filePath);
Expand Down
32 changes: 16 additions & 16 deletions website/versioned_docs/version-stable/browser.md
Expand Up @@ -19,7 +19,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.1.0/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.1.1/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.

Expand All @@ -30,8 +30,8 @@ See below for examples.
### Global

```html
<script src="https://unpkg.com/prettier@3.1.0/standalone.js"></script>
<script src="https://unpkg.com/prettier@3.1.0/plugins/graphql.js"></script>
<script src="https://unpkg.com/prettier@3.1.1/standalone.js"></script>
<script src="https://unpkg.com/prettier@3.1.1/plugins/graphql.js"></script>
<script>
(async () => {
const formatted = await prettier.format("type Query { hello: String }", {
Expand All @@ -48,8 +48,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.1.0/standalone.mjs";
import prettierPluginGraphql from "https://unpkg.com/prettier@3.1.0/plugins/graphql.mjs";
import * as prettier from "https://unpkg.com/prettier@3.1.1/standalone.mjs";
import prettierPluginGraphql from "https://unpkg.com/prettier@3.1.1/plugins/graphql.mjs";
const formatted = await prettier.format("type Query { hello: String }", {
parser: "graphql",
Expand All @@ -62,8 +62,8 @@ Note that the [`unpkg` field](https://unpkg.com/#examples) in Prettier’s `pack

```js
define([
"https://unpkg.com/prettier@3.1.0/standalone.js",
"https://unpkg.com/prettier@3.1.0/plugins/graphql.js",
"https://unpkg.com/prettier@3.1.1/standalone.js",
"https://unpkg.com/prettier@3.1.1/plugins/graphql.js",
], async (prettier, ...plugins) => {
const formatted = await prettier.format("type Query { hello: String }", {
parser: "graphql",
Expand Down Expand Up @@ -91,8 +91,8 @@ This syntax doesn’t necessarily work in the browser, but it can be used when b
### Worker

```js
importScripts("https://unpkg.com/prettier@3.1.0/standalone.js");
importScripts("https://unpkg.com/prettier@3.1.0/plugins/graphql.js");
importScripts("https://unpkg.com/prettier@3.1.1/standalone.js");
importScripts("https://unpkg.com/prettier@3.1.1/plugins/graphql.js");

(async () => {
const formatted = await prettier.format("type Query { hello: String }", {
Expand All @@ -108,9 +108,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.1.0/standalone.mjs";
import prettierPluginBabel from "https://unpkg.com/prettier@3.1.0/plugins/babel.mjs";
import prettierPluginEstree from "https://unpkg.com/prettier@3.1.0/plugins/estree.mjs";
import * as prettier from "https://unpkg.com/prettier@3.1.1/standalone.mjs";
import prettierPluginBabel from "https://unpkg.com/prettier@3.1.1/plugins/babel.mjs";
import prettierPluginEstree from "https://unpkg.com/prettier@3.1.1/plugins/estree.mjs";
console.log(
await prettier.format("const html=/* HTML */ `<DIV> </DIV>`", {
Expand All @@ -126,10 +126,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.1.0/standalone.mjs";
import prettierPluginBabel from "https://unpkg.com/prettier@3.1.0/plugins/babel.mjs";
import prettierPluginEstree from "https://unpkg.com/prettier@3.1.0/plugins/estree.mjs";
import prettierPluginHtml from "https://unpkg.com/prettier@3.1.0/plugins/html.mjs";
import * as prettier from "https://unpkg.com/prettier@3.1.1/standalone.mjs";
import prettierPluginBabel from "https://unpkg.com/prettier@3.1.1/plugins/babel.mjs";
import prettierPluginEstree from "https://unpkg.com/prettier@3.1.1/plugins/estree.mjs";
import prettierPluginHtml from "https://unpkg.com/prettier@3.1.1/plugins/html.mjs";
console.log(
await prettier.format("const html=/* HTML */ `<DIV> </DIV>`", {
Expand Down
2 changes: 1 addition & 1 deletion website/versioned_docs/version-stable/configuration.md
Expand Up @@ -4,7 +4,7 @@ title: Configuration File
original_id: configuration
---

Prettier uses [lilconfig](https://github.com/antonk52/lilconfig) for configuration file support. This means you can configure Prettier via (in order of precedence):
You can configure Prettier via (in order of precedence):

- A `"prettier"` key in your `package.json` file.
- A `.prettierrc` file written in JSON or YAML.
Expand Down

0 comments on commit b86701d

Please sign in to comment.