Closed
Description
While upgrading my dependencies on a project with some pretty old css (and which includes some webkit-specific hacks), I noticed an issue. Autoprefixer version 6.7.0 now entirely removes "-webkit-box-orient" rules. Version 6.6.1 did not have this issue.
.foo {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
}
->
.foo {
display: -webkit-box;
-webkit-box-align: stretch;
}
Here's the code I've tested with:
require('postcss')([require('postcss-cssnext')({browsers: 'chrome >= 42, safari >= 8'})]).process('.foo { display: -webkit-box; -webkit-box-orient: vertical; -webkit-box-align: stretch; }').css
Metadata
Metadata
Assignees
Labels
No labels
Activity
ai commentedon Jan 25, 2017
Is it a really issue if you ask Autoprefixer to remove old prefix? ;)
IharKrasnik commentedon Jan 25, 2017
@ai How to preserve -webkit-box-orient?
ai commentedon Jan 25, 2017
Add any flexbox 2009 browser to
browserslist
in yourpackage.json
.IharKrasnik commentedon Jan 25, 2017
Thank you
Macil commentedon Jan 25, 2017
@ai This still happens even if I add
remove: false
to the options.ai commentedon Jan 25, 2017
Are you sure that it does from Autoprefixer? Maybe some other tool (like minification in webpack’s
css-loader
) change file too?yidea commentedon Jan 26, 2017
tested out with css-loader remain the same version, Autoprefixer is the only factor remains that causing this
Macil commentedon Jan 26, 2017
Oh, I was passing remove:false to postcss-cssnext. Passing it on to autoprefixer results in -webkit-box-orient not being removed.
I thought the behavior of the (default) remove:true option was to only remove outdated rules if the modern rule was specified too. So that
display:-webkit-flex;display:flex;
->display:flex;
if possible, butdisplay:-webkit-flex;
alone would remain asdisplay:-webkit-flex;
. This case still seems to be the same. The-webkit-box-orient
rules uniquely being stripped unconditionally is surprising to me, and I wonder if it really is intended or best given that it doesn't seem any other rules are treated like that.jrowlingson commentedon Jan 27, 2017
Disabling the remove option or adding a flexbox 2009 browser to browsers list are both fairly coarse workarounds for this type of scenario. Any interest in adding an option to opt-out of removal at the rule level?
ai commentedon Jan 27, 2017
Extra option is not a solution, because most of developers will not read docs.
If you want to fix it, send a PR removing this hack
https://github.com/postcss/autoprefixer/blob/master/lib/processor.coffee#L133
jrowlingson commentedon Jan 27, 2017
@ai thanks - will do
Lars-Weber commentedon Apr 27, 2017
Possibly helpful for anyone reading up on this thread and problem, least intrusive option to prevent the removal of the line in question is to just disable the autoprefixer for this line/section
ai commentedon Apr 27, 2017
@Lars-Weber best option is just add old Safari to
browserslist
config47 remaining items