Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
^7
->8.4.6
Release Notes
postcss/postcss
v8.4.6
Compare Source
.root
access for plugin-less case.v8.4.5
Compare Source
raws
types to make object extendable (by James Garbutt).v8.4.4
Compare Source
v8.4.3
Compare Source
this.css.replace is not a function
error.v8.4.2
Compare Source
v8.4.1
Compare Source
Stringifier
types (by James Garbutt).v8.4.0
Compare Source
PostCSS 8.4 brought ranges for warnings and errors, smaller
node_modules
size, lazy parsing to avoidPostCSS 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:
Rages for Errors and Warnings
@adalinesimonian, the author of amazing Stylelint extension for VS Code, added ranges to errors and warnings.
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 (with the help of @WilhelmYakunin) tries to solve the problem in another way. It allows us to save resources and remove thePostCSS does nothing
warning.Install Size Reduction
With ≈60M weekly downloads, PostCSS has responsibility for the world’s resource spending.
Together with @7rulnik we reduced
source-map-js
size. It is transitive dependency of PostCSS.In 8.4, we moved to a fixed version of
#### Migration from Jest to `uvu`source-map-js
, which reduced thepostcss
size in yournode_modules
from ≈1 MB to 0.3 MB. With the huge popularity of PostCSS, it will free a lot of resources on our CIs.@kimoofey refactored all tests from the popular Jest framework to small and fast
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
: 24 → 13 seconds).TypeScript Fixes
Processor
types.Stringifier
types (by @43081j).Root
andDocument
in result values (by @43081j).Node#walkRules()
types (by @hudochenkov).Other Changes
v8.3.11
Compare Source
v8.3.10
Compare Source
Maximum call stack
issue of some source maps (by Yeting Li).v8.3.9
Compare Source
nanocolors
topicocolors
.v8.3.8
Compare Source
nanocolors
.v8.3.7
Compare Source
colorette
tonanocolors
.package.json
(by Christian Oliff).v8.3.6
Compare Source
missed semicolon
error (by @Gusted).v8.3.5
Compare Source
v8.3.4
Compare Source
v8.3.3
Compare Source
postcss
dependency duplication in custom parsers.v8.3.2
Compare Source
v8.3.1
Compare Source
v8.3.0
Compare Source
PostCSS 8.3 improved source map parsing performance, added
Node#assign()
shortcut, and experimentalDocument
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:
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 forked
source-map
0.6 tosource-map-js
and back-ported performance improvements from 0.7. In 8.3 we switched fromsource-map
to thissource-map-js
fork.You map see 4x performance improvements in parsing map from processing step before PostCSS (for instance, Sass).
Document
NodesThanks to @gucong3000, PostCSS already parse CSS from HTML and JS files (CSS-in-JS templates and objects).
But his plugin need big updates. @hudochenkov from stylelint team decided to create new parsers for styles inside CSS-in-JS, HTML, and Markdown.
He suggested adding new
Document
node type to PostCSS AST to keep multipleRoot
nodes inside and JS/HTML/Markdown code blocks between these style blocks.This is an experimental feature. Some aspects of this node could change within minor or patch version releases.
Node#assign()
ShortcutThe creator of famous
postcss-preset-env
and many other PostCSS tools, @jonathantneal suggested a nice shortcut to change multiple properties in the node:v8.2.15
Compare Source
list
type definitions (by @n19htz).v8.2.14
Compare Source
source-map
from client-side bundle (by Barak Igal).v8.2.13
Compare Source
v8.2.12
Compare Source
package.json
exports.v8.2.11
Compare Source
DEP0148
warning in Node.js 16.v8.2.10
Compare Source
v8.2.9
Compare Source
NodeErrorOptions
type (by Rouven Weßling).v8.2.8
Compare Source
v8.2.7
Compare Source
v8.2.6
Compare Source
Maximum call stack size exceeded
inNode#toJSON
.v8.2.5
Compare Source
list.split
(by Natalie Weizenbaum).v8.2.4
Compare Source
postcss.plugin()
warning (by Tom Williams).v8.2.3
Compare Source
JSON.stringify(Node[])
support (by Niklas Mischkulnig).v8.2.2
Compare Source
Result#warn()
types.v8.2.1
Compare Source
list
type definitions (by @n19htz).v8.2.0
Compare Source
PostCSS 8.2 added a new API to serialize and deserialize CSS AST to JSON.
Thanks to @mischnic for his work.
v8.1.14
Compare Source
v8.1.13
Compare Source
v8.1.12
Compare Source
v8.1.11
Compare Source
v8.1.10
Compare Source
LazyResult
type export (by Evan You).LazyResult
type compatibility withPromise
(by Anton Kastritskiy).v8.1.9
Compare Source
v8.1.8
Compare Source
LazyResult
type compatibility withPromise
(by Ludovico Fischer).v8.1.7
Compare Source
import
support in TypeScript (by Remco Haszing).v8.1.6
Compare Source
package.exports
Node.js 15 fix.v8.1.5
Compare Source
v8.1.4
Compare Source
v8.1.3
Compare Source
package.types
.v8.1.2
Compare Source
v8.1.1
Compare Source
v8.1.0
Compare Source
PostCSS 8.1 fixed the new visitor API from the 8.0 release.
We fixed
Root
andRootExit
re-calling on children's changes. And now visitors will visit the parent again if nested children were changed.We added
Once
andOnceExit
events, which will not be called again on node changes. You can use them to lint files or collect statistics:We updated Migration guide according to new changes.
v8.0.9
Compare Source
Transformer
to exported types (by Pierre-Marie Dartus).v8.0.8
Compare Source
8.0.7
regression on PostCSS 7 nodes converting (by Adam Wathan).v8.0.7
Compare Source
v8.0.6
Compare Source
Container
.v8.0.5
Compare Source
v8.0.4
Compare Source
Cannot read property 'line' of null
error.v8.0.3
Compare Source
v8.0.2
Compare Source
v8.0.1
Compare Source
Processor#version
.v8.0.0
Compare Source
PostCSS 8.0 brings new plugin API,
node_modules
size reduction, better source map support, and CSS parser improvements.Check out a day-by-day diary of PostCSS 8.0 development process.
See Migration Guides for end-users and for plugin developers.
Thanks to Sponsors
With more than 100 M downloads per month, it becomes hard to support PostCSS in free time. For instance, getting the 8.0 release ready took 4 months of work.
This release was possible thanks to out community. Tailwind CSS, De Voorhoede, InVision AG, Brainbow, and many individual contributions.
If your company wants to support the sustainability of front-end infrastructure or just wants to give some love to PostCSS, you can join our supporters by:
Breaking Changes
We try to avoid any breaking changes for end-users:
node_modules/postcss
for old browsers.postcss.vendor
API.New Plugin API
The biggest change in PostCSS 8 is a new plugin API. Thanks to @BondarenkoAlex for big help in creating a new API.
We know that rewriting old plugins will take time, but the new API will improve the end-user’s experience and make life easier for plugin developers:
postcss
duplicates in yournode_modules
. New API fixes this problem.These resources will help plugin developers in API migration:
PostCSS development guidelines were also changed:
postcss
inpeerDependencies
.New Website without React
Previously PostCSS used a React-based framework for the project's website. Since we have a static website, we decided to migrate to a React-free framework and got good performance improvements:
Check out postcss.org and new API docs that feature the awesome alchemy-inspired design by @okonet.
We also removed Google Analytics tracking scripts and encourage other open source projects to be an example in caring about user’s privacy and performance.
Parser Improvments
Did you know that all examples below are valid CSS?
Now PostCSS parses even those rare edge cases correctly. Thanks to Tailwind CSS and Prettier teams for adding more cases to our CSS parser tests collection.
Note that now
--roundMixin: { border-radius: 8px }
will be parsed as aDeclaration
with the{ border-radius: 8px }
value.Better Source Map Support
We have added support for two new source map formats: Index map and JSON (
data:application/json
).PostCSS 8 is now much closer to the source map spec. Thanks to the Google team for reports:
sources
in map as URLs instead of file paths.sources
relative to map file, not CSS file.A few source map APIs were added:
opts.maps.absolute = true
option for absolute paths in source map.opts.maps.annotation = (file, root) => url
for a dynamic path to source map.Node#origin()
now returnsposition.url
in addition toposition.file
for compatibility with absolute URLs in source map’ssources
.API Changes
We have added ES modules support and now we export all classes from the main entry:
@graberzz added
Node#source.offset
in addition toline
andcolumn
.CSS Custom Properties and Sass-like
$
-variables now have a specialDeclaration#variable
mark:TypeScript
PostCSS now has a first-class TypeScript support:
Other Changes
replaceWith
with input replaced node (by @josephkaptur).chalk
tocolorette
.Declaration#value
auto-conversion to string to prevent plugin’s bugs.<input css 9M4X8l>:10:6
.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.