postcss/postcss
### [`v8.3.0`](https://togithub.com/postcss/postcss/releases/8.3.0)
[Compare Source](https://togithub.com/postcss/postcss/compare/8.2.15...8.3.0)
PostCSS 8.3 improved source map parsing performance, added `Node#assign()` shortcut, and experimental `Document` node to AST.
#### 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).
#### Source Map Performance
Because PostCSS needs synchronous API, we can’t move from the old \`source-map 0.6 to 0.7 (many other open-source projects too).
[@7rulnik](https://togithub.com/7rulnik) forked `source-map` 0.6 to [`source-map-js`](https://www.npmjs.com/package/source-map-js) and back-ported performance improvements from 0.7. In 8.3 we [switched](https://togithub.com/postcss/postcss/pull/1515) from `source-map` to this `source-map-js` fork.
You map see 4x performance improvements in parsing map from processing step before PostCSS (for instance, Sass).
#### `Document` Nodes
Thanks to [@gucong3000](https://togithub.com/gucong3000), PostCSS already parse CSS from HTML and JS files (CSS-in-JS templates and objects).
But his plugin need big updates. [@hudochenkov](https://togithub.com/hudochenkov) from [stylelint](https://stylelint.io/) team decided to create new parsers for styles inside [CSS-in-JS](https://togithub.com/stylelint/postcss-css-in-js), [HTML](https://togithub.com/stylelint/postcss-html), and [Markdown](https://togithub.com/stylelint/postcss-markdown).
He [suggested](https://togithub.com/postcss/postcss/issues/1498) adding new [`Document`](https://postcss.org/api/#document) node type to PostCSS AST to keep multiple `Root` nodes inside and JS/HTML/Markdown code blocks between these style blocks.
```js
const document = htmlParser(
''
)
document.type //=> 'document'
document.nodes.length //=> 2
document.nodes[0].type //=> 'root'
```
This is an experimental feature. Some aspects of this node could change within minor or patch version releases.
#### `Node#assign()` Shortcut
The creator of famous `postcss-preset-env` and many other PostCSS tools, [@jonathantneal](https://togithub.com/jonathantneal) [suggested](https://togithub.com/postcss/postcss/pull/1572) a nice shortcut to change multiple properties in the node:
```js
decl.assign({ prop: 'word-wrap', value: 'break-word' })
```
Configuration
📅 Schedule: At any time (no schedule defined).
🚦 Automerge: Enabled.
♻️ 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, check this box.
This PR contains the following updates:
8.2.15
->8.3.0
Release Notes
postcss/postcss
### [`v8.3.0`](https://togithub.com/postcss/postcss/releases/8.3.0) [Compare Source](https://togithub.com/postcss/postcss/compare/8.2.15...8.3.0)Configuration
📅 Schedule: At any time (no schedule defined).
🚦 Automerge: Enabled.
♻️ 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.