Skip to content

Commit 9b21e2d

Browse files
committed
Use new overrideBrowserslist
1 parent f97dab9 commit 9b21e2d

File tree

4 files changed

+28
-11
lines changed

4 files changed

+28
-11
lines changed

lib/autoprefixer-rails.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ module AutoprefixerRails
66
# Add prefixes to `css`. See `Processor#process` for options.
77
def self.process(css, opts = {})
88
params = {}
9+
if opts.key?(:overrideBrowserslist)
10+
params[:overrideBrowserslist] = opts.delete(:overrideBrowserslist)
11+
end
912
params[:browsers] = opts.delete(:browsers) if opts.key?(:browsers)
1013
params[:cascade] = opts.delete(:cascade) if opts.key?(:cascade)
1114
params[:remove] = opts.delete(:remove) if opts.key?(:remove)

lib/autoprefixer-rails/processor.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,13 +83,13 @@ def params_with_browsers(from = nil)
8383
end
8484

8585
params = @params
86-
if !params.key?(:browsers) && from
86+
if !params.key?(:browsers) && !params.key?(:overrideBrowserslist) && from
8787
file = find_config(from)
8888
if file
8989
env = params[:env].to_s || "development"
9090
config = parse_config(file)
9191
params = params.dup
92-
params[:browsers] = (config[env] || config["defaults"])
92+
params[:overrideBrowserslist] = (config[env] || config["defaults"])
9393
end
9494
end
9595

spec/autoprefixer_spec.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
it "process CSS for selected browsers" do
1414
css = "a {\n tab-size: 2\n}"
15-
result = AutoprefixerRails.process(css, browsers: ["opera 12"])
15+
result = AutoprefixerRails.process(css, overrideBrowserslist: ["opera 12"])
1616
expect(result.css).to eq "a {\n" \
1717
" -o-tab-size: 2;\n" \
1818
" tab-size: 2\n" \
@@ -21,7 +21,7 @@
2121

2222
it "process @supports" do
2323
css = "@supports (display: flex) { }"
24-
result = AutoprefixerRails.process(css, browsers: ["chrome 28"])
24+
result = AutoprefixerRails.process(css, overrideBrowserslist: ["chrome 28"])
2525
expect(result.css).to eq(
2626
"@supports ((display: -webkit-flex) or (display: flex)) { }"
2727
)
@@ -64,7 +64,7 @@
6464
end
6565

6666
it "shows debug" do
67-
info = AutoprefixerRails.processor(browsers: ["chrome 25"]).info
67+
info = AutoprefixerRails.processor(overrideBrowserslist: ["chrome 25"]).info
6868
expect(info).to match(/Browsers:\n Chrome: 25\n\n/)
6969
expect(info).to match(/ transition: webkit/)
7070
end
@@ -78,15 +78,15 @@
7878

7979
it "shows correct error on country statistics" do
8080
expect {
81-
AutoprefixerRails.process("", browsers: "> 1% in US")
81+
AutoprefixerRails.process("", overrideBrowserslist: "> 1% in US")
8282
}.to raise_error(/Use Autoprefixer with webpack/)
8383
end
8484

8585
context "Sprockets" do
8686
before :each do
8787
@assets = Sprockets::Environment.new
8888
@assets.append_path(@dir.join("app/app/assets/stylesheets"))
89-
AutoprefixerRails.install(@assets, browsers: ["chrome 25"])
89+
AutoprefixerRails.install(@assets, overrideBrowserslist: ["chrome 25"])
9090
end
9191

9292
it "integrates with Sprockets" do

vendor/autoprefixer.js

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -805,6 +805,8 @@ var postcss = require('postcss');
805805

806806
var agents = require('caniuse-lite').agents;
807807

808+
var chalk = require('chalk');
809+
808810
var Browsers = require('./browsers');
809811

810812
var Prefixes = require('./prefixes');
@@ -813,6 +815,8 @@ var data = require('../data/prefixes');
813815

814816
var info = require('./info');
815817

818+
var WARNING = '\n' + ' Replace Autoprefixer `browsers` option to Browserslist config.\n' + ' Use `browserslist` key in `package.json` or `.browserslistrc` file.\n' + '\n' + ' Using `browsers` option cause some error. Browserslist config \n' + ' can be used for Babel, Autoprefixer, postcss-normalize and other tools.\n' + '\n' + ' If you really need to use option, rename it to `overrideBrowserslist`.\n' + '\n' + ' Learn more at:\n' + ' https://github.com/browserslist/browserslist#readme\n' + ' https://twitter.com/browserslist\n' + '\n';
819+
816820
function isPlainObject(obj) {
817821
return Object.prototype.toString.apply(obj) === '[object Object]';
818822
}
@@ -861,12 +865,22 @@ module.exports = postcss.plugin('autoprefixer', function () {
861865
}
862866

863867
if (options.browser) {
864-
throw new Error('Change `browser` option to `browsers` in Autoprefixer');
868+
throw new Error('Change `browser` option to `overrideBrowserslist` in Autoprefixer');
865869
} else if (options.browserslist) {
866-
throw new Error('Change `browserslist` option to `browsers` in Autoprefixer');
870+
throw new Error('Change `browserslist` option to `overrideBrowserslist` in Autoprefixer');
867871
}
868872

869-
if (options.browsers) {
873+
if (options.overrideBrowserslist) {
874+
reqs = options.overrideBrowserslist;
875+
} else if (options.browsers) {
876+
if (chalk.red) {
877+
console.warn(chalk.red(WARNING.replace(/`[^`]+`/g, function (i) {
878+
return chalk.yellow(i.slice(1, -1));
879+
})));
880+
} else {
881+
console.warn(WARNING);
882+
}
883+
870884
reqs = options.browsers;
871885
}
872886

@@ -940,7 +954,7 @@ module.exports.info = function () {
940954
};
941955

942956
}).call(this,require('_process'))
943-
},{"../data/prefixes":1,"./browsers":5,"./info":62,"./prefixes":66,"_process":639,"browserslist":78,"caniuse-lite":601,"postcss":627}],4:[function(require,module,exports){
957+
},{"../data/prefixes":1,"./browsers":5,"./info":62,"./prefixes":66,"_process":639,"browserslist":78,"caniuse-lite":601,"chalk":75,"postcss":627}],4:[function(require,module,exports){
944958
"use strict";
945959

946960
function last(array) {

0 commit comments

Comments
 (0)