browserslist 3.2.4 → 3.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/README.md +47 -24
- package/cli.js +2 -2
- package/index.js +6 -5
- package/package.json +11 -36
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
|
3
3
|
|
|
4
|
+
## 3.2.8
|
|
5
|
+
* Add IE 9-5.5 to dead browsers.
|
|
6
|
+
* Remove development configs from npm package.
|
|
7
|
+
|
|
8
|
+
## 3.2.7
|
|
9
|
+
* Add Firefox 60 as Firefox ESR.
|
|
10
|
+
|
|
11
|
+
## 3.2.6
|
|
12
|
+
* Add Opera Mini 12 to dead browsers.
|
|
13
|
+
* Update docs (by Jamie Kyle).
|
|
14
|
+
|
|
15
|
+
## 3.2.5
|
|
16
|
+
* Fix excluding Opera Mini and other browsers with `all` version.
|
|
17
|
+
|
|
4
18
|
## 3.2.4
|
|
5
19
|
* Resolve shareable config from current working directory.
|
|
6
20
|
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@ Library to share target browsers between different front-end tools.
|
|
|
7
7
|
It is used in:
|
|
8
8
|
|
|
9
9
|
* [Autoprefixer]
|
|
10
|
-
* [
|
|
10
|
+
* [Babel]
|
|
11
11
|
(external config in `package.json` or `browserslist` will be supported in 7.0)
|
|
12
12
|
* [postcss-preset-env]
|
|
13
13
|
* [eslint-plugin-compat]
|
|
@@ -22,7 +22,7 @@ when you add the following to `package.json`:
|
|
|
22
22
|
{
|
|
23
23
|
"browserslist": [
|
|
24
24
|
"> 1%",
|
|
25
|
-
"
|
|
25
|
+
"IE 10"
|
|
26
26
|
]
|
|
27
27
|
}
|
|
28
28
|
```
|
|
@@ -33,7 +33,6 @@ Or in `.browserslistrc` config:
|
|
|
33
33
|
# Browsers that we support
|
|
34
34
|
|
|
35
35
|
> 1%
|
|
36
|
-
Last 2 versions
|
|
37
36
|
IE 10 # sorry
|
|
38
37
|
```
|
|
39
38
|
|
|
@@ -59,11 +58,11 @@ You can test Browserslist queries in [online demo].
|
|
|
59
58
|
[eslint-plugin-compat]: https://github.com/amilajack/eslint-plugin-compat
|
|
60
59
|
[Browserslist Example]: https://github.com/browserslist/browserslist-example
|
|
61
60
|
[postcss-preset-env]: https://github.com/jonathantneal/postcss-preset-env
|
|
62
|
-
[babel-preset-env]: https://github.com/babel/babel/tree/master/packages/babel-preset-env
|
|
63
61
|
[postcss-normalize]: https://github.com/jonathantneal/postcss-normalize
|
|
64
62
|
[Autoprefixer]: https://github.com/postcss/autoprefixer
|
|
65
63
|
[online demo]: http://browserl.ist/
|
|
66
64
|
[Can I Use]: http://caniuse.com/
|
|
65
|
+
[Babel]: https://github.com/babel/babel/tree/master/packages/babel-preset-env
|
|
67
66
|
|
|
68
67
|
## Tools
|
|
69
68
|
|
|
@@ -71,14 +70,17 @@ You can test Browserslist queries in [online demo].
|
|
|
71
70
|
to use it in `> 0.5% in my stats` query.
|
|
72
71
|
* [`browserslist-useragent`] checks browser by user agent string
|
|
73
72
|
to match Browserslist target browsers query.
|
|
73
|
+
* [`browserslist-useragent-ruby`] is a Ruby library to checks browser
|
|
74
|
+
by user agent string to match Browserslist.
|
|
74
75
|
* [`caniuse-api`] returns browsers which support some specific feature.
|
|
75
76
|
* Run `npx browserslist` in your project directory to see project’s
|
|
76
77
|
target browsers. This CLI tool is built-in and available in any project
|
|
77
78
|
with Autoprefixer.
|
|
78
79
|
|
|
79
|
-
[`browserslist-useragent`]: https://github.com/
|
|
80
|
-
[`browserslist-
|
|
81
|
-
[`
|
|
80
|
+
[`browserslist-useragent-ruby`]: https://github.com/browserslist/browserslist-useragent-ruby
|
|
81
|
+
[`browserslist-useragent`]: https://github.com/pastelsky/browserslist-useragent
|
|
82
|
+
[`browserslist-ga`]: https://github.com/browserslist/browserslist-ga
|
|
83
|
+
[`caniuse-api`]: https://github.com/Nyalab/caniuse-api
|
|
82
84
|
|
|
83
85
|
|
|
84
86
|
## Queries
|
|
@@ -95,10 +97,28 @@ Browserslist will use browsers query from one of this sources:
|
|
|
95
97
|
Browserslist will use defaults:
|
|
96
98
|
`> 0.5%, last 2 versions, Firefox ESR, not dead`.
|
|
97
99
|
|
|
100
|
+
|
|
101
|
+
### Best Practices
|
|
102
|
+
|
|
103
|
+
* Select browsers directly (`last 2 Chrome versions`) only if you are making
|
|
104
|
+
web app for kiosk with one browser. There are a lot browsers on the market.
|
|
105
|
+
If you are making general web app you should respect browsers diversity.
|
|
106
|
+
* If you want to change the default set of browsers we recommend to combine
|
|
107
|
+
`last 1 version`, `not dead` with `> 0.2%` (or `> 1% in US`,
|
|
108
|
+
`> 1% in my stats`). Just `last n versions` adds to many dead browsers
|
|
109
|
+
and do not add popular old versions. Just `> 0.2%` make popular browsers even
|
|
110
|
+
more popular, so we will have a monopoly and stagnation, as we had
|
|
111
|
+
with Internet Explorer 6.
|
|
112
|
+
* Don’t remove browsers just because you don’t know them. Opera Mini has
|
|
113
|
+
100 million users in Africa and it is more popular in global market,
|
|
114
|
+
than Microsoft Edge. Chinese QQ Browsers has more market share than Firefox
|
|
115
|
+
and desktop Safari altogether.
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
### Full List
|
|
119
|
+
|
|
98
120
|
You can specify the versions by queries (case insensitive):
|
|
99
121
|
|
|
100
|
-
* `last 2 versions`: the last 2 versions for each browser.
|
|
101
|
-
* `last 2 Chrome versions`: the last 2 versions of Chrome browser.
|
|
102
122
|
* `> 5%`: versions selected by global usage statistics.
|
|
103
123
|
`>=`, `<` and `<=` work too.
|
|
104
124
|
* `> 5% in US`: uses USA usage statistics. It accepts [two-letter country code].
|
|
@@ -124,7 +144,9 @@ You can specify the versions by queries (case insensitive):
|
|
|
124
144
|
* `dead`: browsers from `last 2 version` query, but with less than 0.5%
|
|
125
145
|
in global usage statistics and without official support or updates
|
|
126
146
|
for 24 months. Right now it is `IE 10`, `IE_Mob 10`, `BlackBerry 10`,
|
|
127
|
-
and `
|
|
147
|
+
`BlackBerry 7`, and `OperaMobile 12.1`.
|
|
148
|
+
* `last 2 versions`: the last 2 versions for *each* browser.
|
|
149
|
+
* `last 2 Chrome versions`: the last 2 versions of Chrome browser.
|
|
128
150
|
* `defaults`: Browserslist’s default browsers
|
|
129
151
|
(`> 0.5%, last 2 versions, Firefox ESR, not dead`).
|
|
130
152
|
* `not ie <= 8`: exclude browsers selected by previous queries.
|
|
@@ -212,7 +234,7 @@ browsers in `package.json` with `browserslist` key:
|
|
|
212
234
|
},
|
|
213
235
|
"browserslist": [
|
|
214
236
|
"> 1%",
|
|
215
|
-
"
|
|
237
|
+
"IE 10"
|
|
216
238
|
]
|
|
217
239
|
}
|
|
218
240
|
```
|
|
@@ -227,8 +249,7 @@ and have browsers queries split by a new line. Comments starts with `#` symb
|
|
|
227
249
|
# Browsers that we support
|
|
228
250
|
|
|
229
251
|
> 1%
|
|
230
|
-
|
|
231
|
-
IE 8 # sorry
|
|
252
|
+
IE 10 # sorry
|
|
232
253
|
```
|
|
233
254
|
|
|
234
255
|
Browserslist will check config in every directory in `path`.
|
|
@@ -276,8 +297,8 @@ When writing a shared Browserslist package, just export an array.
|
|
|
276
297
|
|
|
277
298
|
```js
|
|
278
299
|
module.exports = [
|
|
279
|
-
'
|
|
280
|
-
'ie
|
|
300
|
+
'> 1%',
|
|
301
|
+
'ie 10'
|
|
281
302
|
]
|
|
282
303
|
```
|
|
283
304
|
|
|
@@ -333,11 +354,12 @@ In `package.json`:
|
|
|
333
354
|
```js
|
|
334
355
|
"browserslist": {
|
|
335
356
|
"production": [
|
|
336
|
-
"
|
|
337
|
-
"ie
|
|
357
|
+
"> 1%",
|
|
358
|
+
"ie 10"
|
|
338
359
|
],
|
|
339
360
|
"development": [
|
|
340
|
-
"last 1 version"
|
|
361
|
+
"last 1 chrome version",
|
|
362
|
+
"last 1 firefox version"
|
|
341
363
|
]
|
|
342
364
|
}
|
|
343
365
|
```
|
|
@@ -346,11 +368,12 @@ In `.browserslistrc` config:
|
|
|
346
368
|
|
|
347
369
|
```ini
|
|
348
370
|
[production staging]
|
|
349
|
-
|
|
350
|
-
ie
|
|
371
|
+
> 1%
|
|
372
|
+
ie 10
|
|
351
373
|
|
|
352
374
|
[development]
|
|
353
|
-
last 1 version
|
|
375
|
+
last 1 chrome version
|
|
376
|
+
last 1 firefox version
|
|
354
377
|
```
|
|
355
378
|
|
|
356
379
|
|
|
@@ -405,8 +428,8 @@ var process = function (source, opts) {
|
|
|
405
428
|
}
|
|
406
429
|
```
|
|
407
430
|
|
|
408
|
-
Queries can be a string `">
|
|
409
|
-
or an array `['>
|
|
431
|
+
Queries can be a string `"> 1%, IE 10"`
|
|
432
|
+
or an array `['> 1%', 'IE 10']`.
|
|
410
433
|
|
|
411
434
|
If a query is missing, Browserslist will look for a config file.
|
|
412
435
|
You can provide a `path` option (that can be a file) to find the config file
|
|
@@ -426,7 +449,7 @@ Options:
|
|
|
426
449
|
For non-JS environment and debug purpose you can use CLI tool:
|
|
427
450
|
|
|
428
451
|
```sh
|
|
429
|
-
browserslist "> 1%,
|
|
452
|
+
browserslist "> 1%, IE 10"
|
|
430
453
|
```
|
|
431
454
|
|
|
432
455
|
|
package/cli.js
CHANGED
|
@@ -38,7 +38,7 @@ if (isArg('--help') || isArg('-h')) {
|
|
|
38
38
|
|
|
39
39
|
for (var i = 0; i < args.length; i++) {
|
|
40
40
|
if (args[i][0] !== '-') {
|
|
41
|
-
queries = args[i].replace(/^['
|
|
41
|
+
queries = args[i].replace(/^["']|["']$/g, '')
|
|
42
42
|
continue
|
|
43
43
|
}
|
|
44
44
|
|
|
@@ -46,7 +46,7 @@ if (isArg('--help') || isArg('-h')) {
|
|
|
46
46
|
var name = arg[0]
|
|
47
47
|
var value = arg[1]
|
|
48
48
|
|
|
49
|
-
if (value) value = value.replace(/^['
|
|
49
|
+
if (value) value = value.replace(/^["']|["']$/g, '')
|
|
50
50
|
|
|
51
51
|
if (name === '--config' || name === '-b') {
|
|
52
52
|
opts.config = value
|
package/index.js
CHANGED
|
@@ -140,7 +140,7 @@ function resolve (queries, context) {
|
|
|
140
140
|
var array = type.select.apply(browserslist, args)
|
|
141
141
|
if (isExclude) {
|
|
142
142
|
array = array.concat(array.map(function (j) {
|
|
143
|
-
return j.replace(/\s\
|
|
143
|
+
return j.replace(/\s\S+/, ' 0')
|
|
144
144
|
}))
|
|
145
145
|
return result.filter(function (j) {
|
|
146
146
|
return array.indexOf(j) === -1
|
|
@@ -332,7 +332,7 @@ browserslist.coverage = function (browsers, stats) {
|
|
|
332
332
|
return browsers.reduce(function (all, i) {
|
|
333
333
|
var usage = data[i]
|
|
334
334
|
if (usage === undefined) {
|
|
335
|
-
usage = data[i.replace(/
|
|
335
|
+
usage = data[i.replace(/ \S+$/, ' 0')]
|
|
336
336
|
}
|
|
337
337
|
return all + (usage || 0)
|
|
338
338
|
}, 0)
|
|
@@ -648,7 +648,7 @@ var QUERIES = [
|
|
|
648
648
|
{
|
|
649
649
|
regexp: /^(firefox|ff|fx)\s+esr$/i,
|
|
650
650
|
select: function () {
|
|
651
|
-
return ['firefox 52']
|
|
651
|
+
return ['firefox 52', 'firefox 60']
|
|
652
652
|
}
|
|
653
653
|
},
|
|
654
654
|
{
|
|
@@ -709,8 +709,9 @@ var QUERIES = [
|
|
|
709
709
|
},
|
|
710
710
|
{
|
|
711
711
|
regexp: /^dead$/i,
|
|
712
|
-
select: function () {
|
|
713
|
-
|
|
712
|
+
select: function (context) {
|
|
713
|
+
var dead = ['ie <= 10', 'ie_mob <= 10', 'bb <= 10', 'op_mob <= 12.1']
|
|
714
|
+
return resolve(dead, context)
|
|
714
715
|
}
|
|
715
716
|
},
|
|
716
717
|
{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "browserslist",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.8",
|
|
4
4
|
"description": "Share target browsers between different front-end tools, like Autoprefixer, Stylelint and babel-env-preset",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"caniuse",
|
|
@@ -11,45 +11,30 @@
|
|
|
11
11
|
"license": "MIT",
|
|
12
12
|
"repository": "browserslist/browserslist",
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"caniuse-lite": "^1.0.
|
|
15
|
-
"electron-to-chromium": "^1.3.
|
|
14
|
+
"caniuse-lite": "^1.0.30000844",
|
|
15
|
+
"electron-to-chromium": "^1.3.47"
|
|
16
16
|
},
|
|
17
17
|
"bin": "./cli.js",
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"cross-spawn": "^6.0.5",
|
|
20
20
|
"eslint": "^4.19.1",
|
|
21
21
|
"eslint-ci": "^0.1.1",
|
|
22
|
-
"eslint-config-logux": "^
|
|
22
|
+
"eslint-config-logux": "^22.1.0",
|
|
23
23
|
"eslint-config-standard": "^11.0.0",
|
|
24
|
-
"eslint-plugin-es5": "^1.
|
|
25
|
-
"eslint-plugin-import": "^2.
|
|
26
|
-
"eslint-plugin-jest": "^21.15.
|
|
24
|
+
"eslint-plugin-es5": "^1.3.1",
|
|
25
|
+
"eslint-plugin-import": "^2.12.0",
|
|
26
|
+
"eslint-plugin-jest": "^21.15.1",
|
|
27
27
|
"eslint-plugin-node": "^6.0.1",
|
|
28
28
|
"eslint-plugin-promise": "^3.7.0",
|
|
29
29
|
"eslint-plugin-security": "^1.4.0",
|
|
30
|
-
"eslint-plugin-standard": "^3.0
|
|
30
|
+
"eslint-plugin-standard": "^3.1.0",
|
|
31
31
|
"fs-extra": "^5.0.0",
|
|
32
|
-
"jest": "^22.4.
|
|
33
|
-
"lint-staged": "^7.
|
|
32
|
+
"jest": "^22.4.4",
|
|
33
|
+
"lint-staged": "^7.1.2",
|
|
34
34
|
"pre-commit": "^1.1.3",
|
|
35
|
-
"size-limit": "^0.
|
|
35
|
+
"size-limit": "^0.18.0",
|
|
36
36
|
"yaspeller-ci": "^1.0.0"
|
|
37
37
|
},
|
|
38
|
-
"eslintConfig": {
|
|
39
|
-
"extends": "eslint-config-logux/browser",
|
|
40
|
-
"rules": {
|
|
41
|
-
"security/detect-unsafe-regex": "off",
|
|
42
|
-
"global-require": "off"
|
|
43
|
-
},
|
|
44
|
-
"overrides": {
|
|
45
|
-
"files": [
|
|
46
|
-
"*.test.js"
|
|
47
|
-
],
|
|
48
|
-
"rules": {
|
|
49
|
-
"es5/no-arrow-functions": "off"
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
},
|
|
53
38
|
"jest": {
|
|
54
39
|
"testEnvironment": "node",
|
|
55
40
|
"coverageThreshold": {
|
|
@@ -61,22 +46,12 @@
|
|
|
61
46
|
"<rootDir>/test/fixtures"
|
|
62
47
|
]
|
|
63
48
|
},
|
|
64
|
-
"size-limit": [
|
|
65
|
-
{
|
|
66
|
-
"path": "index.js",
|
|
67
|
-
"limit": "7.2 KB"
|
|
68
|
-
}
|
|
69
|
-
],
|
|
70
49
|
"scripts": {
|
|
71
50
|
"lint-staged": "lint-staged",
|
|
72
51
|
"spellcheck": "yaspeller-ci README.md CHANGELOG.md",
|
|
73
52
|
"lint": "eslint-ci *.js test/*.js benchmark/*.js",
|
|
74
53
|
"test": "jest --coverage && yarn lint && yarn spellcheck && size-limit"
|
|
75
54
|
},
|
|
76
|
-
"lint-staged": {
|
|
77
|
-
"*.md": "yaspeller-ci",
|
|
78
|
-
"*.js": "eslint"
|
|
79
|
-
},
|
|
80
55
|
"browser": {
|
|
81
56
|
"./node.js": "./browser.js",
|
|
82
57
|
"path": false
|