Skip to content

Regression: -webkit-box-orient rules removed #776

Closed
@Macil

Description

@Macil

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

Activity

ai

ai commented on Jan 25, 2017

@ai
Member

Is it a really issue if you ask Autoprefixer to remove old prefix? ;)

IharKrasnik

IharKrasnik commented on Jan 25, 2017

@IharKrasnik

@ai How to preserve -webkit-box-orient?

ai

ai commented on Jan 25, 2017

@ai
Member

Add any flexbox 2009 browser to browserslist in your package.json.

IharKrasnik

IharKrasnik commented on Jan 25, 2017

@IharKrasnik

Thank you

Macil

Macil commented on Jan 25, 2017

@Macil
Author

@ai This still happens even if I add remove: false to the options.

ai

ai commented on Jan 25, 2017

@ai
Member

Are you sure that it does from Autoprefixer? Maybe some other tool (like minification in webpack’s css-loader) change file too?

yidea

yidea commented on Jan 26, 2017

@yidea

tested out with css-loader remain the same version, Autoprefixer is the only factor remains that causing this

Macil

Macil commented on Jan 26, 2017

@Macil
Author

Oh, I was passing remove:false to postcss-cssnext. Passing it on to autoprefixer results in -webkit-box-orient not being removed.

var postcss = require('postcss');

var css = postcss([
  require('postcss-cssnext')({
    browsers: 'chrome >= 42, safari >= 8',
    features: {
      autoprefixer: {remove: false}
    }
  })
]).process(`
.foo {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
}`).css;

console.log(css);

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, but display:-webkit-flex; alone would remain as display:-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

jrowlingson commented on Jan 27, 2017

@jrowlingson

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

ai commented on Jan 27, 2017

@ai
Member

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

jrowlingson commented on Jan 27, 2017

@jrowlingson

@ai thanks - will do

Lars-Weber

Lars-Weber commented on Apr 27, 2017

@Lars-Weber

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

    /* autoprefixer: off */
    -webkit-box-orient: vertical;
    /* autoprefixer: on */
ai

ai commented on Apr 27, 2017

@ai
Member

@Lars-Weber best option is just add old Safari to browserslist config

47 remaining items

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      Participants

      @ai@mebibou@Macil@meigesir@yidea

      Issue actions

        Regression: -webkit-box-orient rules removed · Issue #776 · postcss/autoprefixer