diff --git a/.github/ISSUE_TEMPLATE/formatting.md b/.github/ISSUE_TEMPLATE/formatting.md index 701223c156b8..5eacfff0980f 100644 --- a/.github/ISSUE_TEMPLATE/formatting.md +++ b/.github/ISSUE_TEMPLATE/formatting.md @@ -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 diff --git a/.github/ISSUE_TEMPLATE/integration.md b/.github/ISSUE_TEMPLATE/integration.md index 82268feea3ae..ba23e1699326 100644 --- a/.github/ISSUE_TEMPLATE/integration.md +++ b/.github/ISSUE_TEMPLATE/integration.md @@ -20,7 +20,7 @@ BEFORE SUBMITTING AN ISSUE: **Environments:** -- Prettier Version: 3.1.0 +- Prettier Version: 3.1.1 - Running Prettier via: - Runtime: - Operating System: diff --git a/CHANGELOG.md b/CHANGELOG.md index 211c611e0989..24810aec08f1 100644 --- a/CHANGELOG.md +++ b/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)); +// /test.js/.prettierrc + +// Prettier 3.1.1 +await prettier.resolveConfigFile(new URL("./test.js", import.meta.url)); +// /.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)) + + +```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)) + + +```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)) + + +```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)) + + +```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) diff --git a/docs/browser.md b/docs/browser.md index 4cfd817d53d9..d2bacc1f6023 100644 --- a/docs/browser.md +++ b/docs/browser.md @@ -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 . 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 . 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. @@ -29,8 +29,8 @@ See below for examples. ### Global ```html - - + + - + +