postcss/postcss
### [`v8.4.0`](https://togithub.com/postcss/postcss/releases/8.4.0)
[Compare Source](https://togithub.com/postcss/postcss/compare/8.3.11...8.4.0)
PostCSS 8.4 brought ranges for warnings and errors, smaller `node_modules` size, lazy parsing to avoid `PostCSS does nothing` warning, and TypeScript fixes.
#### Thanks to Sponsors
This release was possible thanks to our community.
If your company wants to support the sustainability of front-end infrastructure or wants to give some love to PostCSS, you can join our supporters by:
- [**Tidelift**](https://tidelift.com/) with a Spotify-like subscription model supporting all projects from your lock file.
- Direct donations in [**PostCSS & Autoprefixer Open Collective**](https://opencollective.com/postcss#section-contributors).
#### Rages for Errors and Warnings
[@adalinesimonian](https://togithub.com/adalinesimonian), the author of amazing [Stylelint extension](https://togithub.com/stylelint/vscode-stylelint) for VS Code, added ranges to errors and warnings.
```js
result.warn(msg, { index }) // One character warning at index
result.warn(msg, { endIndex }) // Starts at node start, ends at endIndex
result.warn(msg, { index, endIndex }) // Starts at index, ends at endIndex
result.warn(msg, { start }) // Starts at start, ends at node end
result.warn(msg, { end }) // Starts at node start, ends at end
result.warn(msg, { start, end }) // Starts at start, ends at end
result.warn(msg, { word }) // Starts at word location, ends at word index + length
```
It will improve DX in the IDE extension.
#### Lazy Parsing
Previously, we found that many tools run PostCSS even if the developer didn’t pass any PostCSS plugins. Parsing is the most expensive step in CSS processing. It led to a waste of resources without any reason.
We tried to resolve the problem by adding a `PostCSS does nothing` warning. But it didn’t force tool authors to be more careful with user’s resources.
If PostCSS sees that tool call it without passing plugins (or changing parser/stringifier), PostCSS will not parse CSS (until toll will call `Result#root`). In 8.4, [@bogdan0083](https://togithub.com/bogdan0083) (with the help of [@WilhelmYakunin](https://togithub.com/WilhelmYakunin)) tries to solve the problem in another way. It allows us to save resources and remove the `PostCSS does nothing` warning.
```js
// No plugins, we do not parse CSS
let result = await postcss().process(css, { from })
result.css // Is the same string passed to process()
result.map // Special 1-to-1 source map
result.root // CSS will parsed only here
```
#### Install Size Reduction
With [≈60M weekly](https://npm-stat.com/charts.html?package=postcss) downloads, PostCSS has responsibility for the world’s resource spending.
Together with [@7rulnik](https://togithub.com/7rulnik) we [reduced](https://togithub.com/7rulnik/source-map-js/pull/7) [`source-map-js`](https://togithub.com/7rulnik/source-map-js) size. It is transitive dependency of PostCSS.
In 8.4, we moved to a fixed version of `source-map-js`, which reduced the `postcss` size in your `node_modules` from [≈1 MB to 0.3 MB](https://packagephobia.com/result?p=postcss). With the huge popularity of PostCSS, it will free a lot of resources on our CIs.
#### Migration from Jest to `uvu`
[@kimoofey](https://togithub.com/kimoofey) refactored all tests from the popular Jest framework to small and fast [`uvu`](https://togithub.com/lukeed/uvu).
It will not affect end-users. However, it reduced our `node_modules` size by 33 MB and made tests twice faster (`yarn install & yarn unit`: 4 → 13 seconds).
#### TypeScript Fixes
- Added `Processor` types.
- Added `Stringifier` types (by [@43081j](https://togithub.com/43081j)).
- Fixed types `Root` and `Document` in result values (by [@43081j](https://togithub.com/43081j)).
- Fixed `Node#walkRules()` types (by [@hudochenkov](https://togithub.com/hudochenkov)).
#### Other Changes
- Fixed docs (by [@paulshryock](https://togithub.com/paulshryock)).
Configuration
📅 Schedule: At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, click this checkbox.
This PR contains the following updates:
8.3.11
->8.4.0
Release Notes
postcss/postcss
### [`v8.4.0`](https://togithub.com/postcss/postcss/releases/8.4.0) [Compare Source](https://togithub.com/postcss/postcss/compare/8.3.11...8.4.0) PostCSS 8.4 brought ranges for warnings and errors, smaller `node_modules` size, lazy parsing to avoid `PostCSS does nothing` warning, and TypeScript fixes. #### Thanks to Sponsors This release was possible thanks to our community. If your company wants to support the sustainability of front-end infrastructure or wants to give some love to PostCSS, you can join our supporters by: - [**Tidelift**](https://tidelift.com/) with a Spotify-like subscription model supporting all projects from your lock file. - Direct donations in [**PostCSS & Autoprefixer Open Collective**](https://opencollective.com/postcss#section-contributors). #### Rages for Errors and Warnings [@adalinesimonian](https://togithub.com/adalinesimonian), the author of amazing [Stylelint extension](https://togithub.com/stylelint/vscode-stylelint) for VS Code, added ranges to errors and warnings. ```js result.warn(msg, { index }) // One character warning at index result.warn(msg, { endIndex }) // Starts at node start, ends at endIndex result.warn(msg, { index, endIndex }) // Starts at index, ends at endIndex result.warn(msg, { start }) // Starts at start, ends at node end result.warn(msg, { end }) // Starts at node start, ends at end result.warn(msg, { start, end }) // Starts at start, ends at end result.warn(msg, { word }) // Starts at word location, ends at word index + length ``` It will improve DX in the IDE extension. #### Lazy Parsing Previously, we found that many tools run PostCSS even if the developer didn’t pass any PostCSS plugins. Parsing is the most expensive step in CSS processing. It led to a waste of resources without any reason. We tried to resolve the problem by adding a `PostCSS does nothing` warning. But it didn’t force tool authors to be more careful with user’s resources. If PostCSS sees that tool call it without passing plugins (or changing parser/stringifier), PostCSS will not parse CSS (until toll will call `Result#root`). In 8.4, [@bogdan0083](https://togithub.com/bogdan0083) (with the help of [@WilhelmYakunin](https://togithub.com/WilhelmYakunin)) tries to solve the problem in another way. It allows us to save resources and remove the `PostCSS does nothing` warning. ```js // No plugins, we do not parse CSS let result = await postcss().process(css, { from }) result.css // Is the same string passed to process() result.map // Special 1-to-1 source map result.root // CSS will parsed only here ``` #### Install Size Reduction With [≈60M weekly](https://npm-stat.com/charts.html?package=postcss) downloads, PostCSS has responsibility for the world’s resource spending. Together with [@7rulnik](https://togithub.com/7rulnik) we [reduced](https://togithub.com/7rulnik/source-map-js/pull/7) [`source-map-js`](https://togithub.com/7rulnik/source-map-js) size. It is transitive dependency of PostCSS. In 8.4, we moved to a fixed version of `source-map-js`, which reduced the `postcss` size in your `node_modules` from [≈1 MB to 0.3 MB](https://packagephobia.com/result?p=postcss). With the huge popularity of PostCSS, it will free a lot of resources on our CIs. #### Migration from Jest to `uvu` [@kimoofey](https://togithub.com/kimoofey) refactored all tests from the popular Jest framework to small and fast [`uvu`](https://togithub.com/lukeed/uvu). It will not affect end-users. However, it reduced our `node_modules` size by 33 MB and made tests twice faster (`yarn install & yarn unit`: 4 → 13 seconds). #### TypeScript Fixes - Added `Processor` types. - Added `Stringifier` types (by [@43081j](https://togithub.com/43081j)). - Fixed types `Root` and `Document` in result values (by [@43081j](https://togithub.com/43081j)). - Fixed `Node#walkRules()` types (by [@hudochenkov](https://togithub.com/hudochenkov)). #### Other Changes - Fixed docs (by [@paulshryock](https://togithub.com/paulshryock)).Configuration
📅 Schedule: At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by WhiteSource Renovate. View repository job log here.