browserslist 4.5.3 → 4.6.0
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 +13 -0
- package/README.md +43 -25
- package/cli.js +1 -1
- package/index.js +37 -7
- package/node.js +1 -0
- package/package.json +4 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
|
3
3
|
|
|
4
|
+
## 4.6
|
|
5
|
+
* Add `mobileToDesktop` option (by Nicolò Ribaudo).
|
|
6
|
+
|
|
7
|
+
## 4.5.6
|
|
8
|
+
* Make `Node > 5` and `node > 5` queries case insensitive.
|
|
9
|
+
|
|
10
|
+
## 4.5.5
|
|
11
|
+
* Fix CLI help (by Marcel Gerber).
|
|
12
|
+
* Add KaiOS browser to docs.
|
|
13
|
+
|
|
14
|
+
## 4.5.4
|
|
15
|
+
* Update docs (by Andrew Leedham and Dan Onoshko).
|
|
16
|
+
|
|
4
17
|
## 4.5.3
|
|
5
18
|
* Fix splitting string to queries.
|
|
6
19
|
|
package/README.md
CHANGED
|
@@ -73,19 +73,51 @@ You can test Browserslist queries in [online demo].
|
|
|
73
73
|
|
|
74
74
|
* [`browserslist-ga`] downloads your website browsers statistics
|
|
75
75
|
to use it in `> 0.5% in my stats` query.
|
|
76
|
-
* [`browserslist-useragent`]
|
|
77
|
-
to
|
|
76
|
+
* [`browserslist-useragent-regexp`] compiles Browserslist query to a RegExp
|
|
77
|
+
to test browser useragent.
|
|
78
78
|
* [`browserslist-useragent-ruby`] is a Ruby library to checks browser
|
|
79
79
|
by user agent string to match Browserslist.
|
|
80
|
+
* [`browserslist-browserstack`] runs BrowserStack tests for all browsers
|
|
81
|
+
in Browserslist config.
|
|
80
82
|
* [`caniuse-api`] returns browsers which support some specific feature.
|
|
81
83
|
* Run `npx browserslist` in your project directory to see project’s
|
|
82
84
|
target browsers. This CLI tool is built-in and available in any project
|
|
83
85
|
with Autoprefixer.
|
|
84
86
|
|
|
85
|
-
[`browserslist-useragent-ruby`]:
|
|
86
|
-
[`browserslist-useragent`]:
|
|
87
|
-
[`browserslist-
|
|
88
|
-
[`
|
|
87
|
+
[`browserslist-useragent-ruby`]: https://github.com/browserslist/browserslist-useragent-ruby
|
|
88
|
+
[`browserslist-useragent`]: https://github.com/pastelsky/browserslist-useragent
|
|
89
|
+
[`browserslist-useragent-regexp`]: https://github.com/browserslist/browserslist-useragent-regexp
|
|
90
|
+
[`browserslist-ga`]: https://github.com/browserslist/browserslist-ga
|
|
91
|
+
[`caniuse-api`]: https://github.com/Nyalab/caniuse-api
|
|
92
|
+
[`browserslist-browserstack`]: https://github.com/xeroxinteractive/browserslist-browserstack
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
## Best Practices
|
|
96
|
+
|
|
97
|
+
* Select browsers directly (`last 2 Chrome versions`) only if you are making
|
|
98
|
+
a web app for a kiosk with one browser. There are a lot of browsers
|
|
99
|
+
on the market. If you are making general web app you should respect
|
|
100
|
+
browsers diversity.
|
|
101
|
+
* There is a `defaults` query, which gives a reasonable configuration
|
|
102
|
+
for most users:
|
|
103
|
+
|
|
104
|
+
```json
|
|
105
|
+
"browserslist": [
|
|
106
|
+
"defaults"
|
|
107
|
+
]
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
* If you want to change the default set of browsers we recommend to combine
|
|
111
|
+
`last 1 version`, `not dead` with `> 0.2%` (or `> 1% in US`,
|
|
112
|
+
`> 1% in my stats`). `last n versions` adds too many dead browsers
|
|
113
|
+
and does not add popular old versions. Choosing a percentage above `0.2%`
|
|
114
|
+
will in the long run make popular browsers even more popular. We might run
|
|
115
|
+
into a monopoly and stagnation situation, as we had with Internet Explorer 6.
|
|
116
|
+
Please use this setting with caution.
|
|
117
|
+
* Don’t remove browsers just because you don’t know them. Opera Mini has
|
|
118
|
+
100 million users in Africa and it is more popular in the global market
|
|
119
|
+
than Microsoft Edge. Chinese QQ Browsers has more market share than Firefox
|
|
120
|
+
and desktop Safari altogether.
|
|
89
121
|
|
|
90
122
|
|
|
91
123
|
## Queries
|
|
@@ -128,25 +160,6 @@ _A quick way to test your query is to do `npx browserslist '> 0.5%, not IE 11'`
|
|
|
128
160
|
in your terminal._
|
|
129
161
|
|
|
130
162
|
|
|
131
|
-
### Best Practices
|
|
132
|
-
|
|
133
|
-
* Select browsers directly (`last 2 Chrome versions`) only if you are making
|
|
134
|
-
a web app for a kiosk with one browser. There are a lot of browsers
|
|
135
|
-
on the market. If you are making general web app you should respect
|
|
136
|
-
browsers diversity.
|
|
137
|
-
* If you want to change the default set of browsers we recommend to combine
|
|
138
|
-
`last 1 version`, `not dead` with `> 0.2%` (or `> 1% in US`,
|
|
139
|
-
`> 1% in my stats`). `last n versions` adds too many dead browsers
|
|
140
|
-
and does not add popular old versions. Choosing a percentage above `0.2%`
|
|
141
|
-
will in the long run make popular browsers even more popular. We might run
|
|
142
|
-
into a monopoly and stagnation situation, as we had with Internet Explorer 6.
|
|
143
|
-
Please use this setting with caution.
|
|
144
|
-
* Don’t remove browsers just because you don’t know them. Opera Mini has
|
|
145
|
-
100 million users in Africa and it is more popular in the global market
|
|
146
|
-
than Microsoft Edge. Chinese QQ Browsers has more market share than Firefox
|
|
147
|
-
and desktop Safari altogether.
|
|
148
|
-
|
|
149
|
-
|
|
150
163
|
### Full List
|
|
151
164
|
|
|
152
165
|
You can specify the browser and Node.js versions by queries (case insensitive):
|
|
@@ -256,6 +269,7 @@ Names are case insensitive:
|
|
|
256
269
|
* `Safari` for desktop Safari.
|
|
257
270
|
* `Samsung` for Samsung Internet.
|
|
258
271
|
* `UCAndroid` or `and_uc` for UC Browser for Android.
|
|
272
|
+
* `kaios` for KaiOS Browser.
|
|
259
273
|
|
|
260
274
|
|
|
261
275
|
## `package.json`
|
|
@@ -485,6 +499,10 @@ Options:
|
|
|
485
499
|
Default is `false.`
|
|
486
500
|
* `dangerousExtend`: Disable security checks for `extend` query.
|
|
487
501
|
Default is `false.`
|
|
502
|
+
* `mobileToDesktop`: Use desktop browsers if Can I Use doesn’t have data
|
|
503
|
+
about this mobile version. For instance, Browserslist will return
|
|
504
|
+
`chrome 20` on `and_chr 20` query (Can I Use has only data only about
|
|
505
|
+
latest versions of mobile browsers). Default is `false`.
|
|
488
506
|
|
|
489
507
|
For non-JS environment and debug purpose you can use CLI tool:
|
|
490
508
|
|
package/cli.js
CHANGED
|
@@ -13,7 +13,7 @@ var USAGE = 'Usage:\n' +
|
|
|
13
13
|
' ' + pkg.name + ' --config="path/to/browserlist/file"\n' +
|
|
14
14
|
' ' + pkg.name + ' --coverage "QUERIES"\n' +
|
|
15
15
|
' ' + pkg.name + ' --coverage=US "QUERIES"\n' +
|
|
16
|
-
' ' + pkg.name + ' --coverage=US,RU,
|
|
16
|
+
' ' + pkg.name + ' --coverage=US,RU,global "QUERIES"\n' +
|
|
17
17
|
' ' + pkg.name + ' --env="environment name defined in config"\n' +
|
|
18
18
|
' ' + pkg.name + ' --stats="path/to/browserlist/stats/file"'
|
|
19
19
|
|
package/index.js
CHANGED
|
@@ -136,11 +136,28 @@ function compareSemver (a, b) {
|
|
|
136
136
|
)
|
|
137
137
|
}
|
|
138
138
|
|
|
139
|
-
function
|
|
139
|
+
function resolveVersion (data, version) {
|
|
140
140
|
if (data.versions.indexOf(version) !== -1) {
|
|
141
141
|
return version
|
|
142
142
|
} else if (browserslist.versionAliases[data.name][version]) {
|
|
143
143
|
return browserslist.versionAliases[data.name][version]
|
|
144
|
+
} else {
|
|
145
|
+
return false
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
function normalizeVersion (data, version, context) {
|
|
150
|
+
var resolved = resolveVersion(data, version)
|
|
151
|
+
if (
|
|
152
|
+
!resolved &&
|
|
153
|
+
context.mobileToDesktop &&
|
|
154
|
+
browserslist.desktopNames[data.name]
|
|
155
|
+
) {
|
|
156
|
+
var alias = checkName(browserslist.desktopNames[data.name])
|
|
157
|
+
resolved = resolveVersion(alias, version)
|
|
158
|
+
}
|
|
159
|
+
if (resolved) {
|
|
160
|
+
return resolved
|
|
144
161
|
} else if (data.versions.length === 1) {
|
|
145
162
|
return data.versions[0]
|
|
146
163
|
} else {
|
|
@@ -274,6 +291,9 @@ function resolve (queries, context) {
|
|
|
274
291
|
* version in direct query.
|
|
275
292
|
* @param {boolean} [opts.dangerousExtend] Disable security checks
|
|
276
293
|
* for extend query.
|
|
294
|
+
* @param {boolean} [opts.mobileToDesktop] Alias mobile browsers to the desktop
|
|
295
|
+
* version when Can I Use doesn't have
|
|
296
|
+
* data about the specified version.
|
|
277
297
|
* @returns {string[]} Array with browser names in Can I Use.
|
|
278
298
|
*
|
|
279
299
|
* @example
|
|
@@ -302,7 +322,8 @@ function browserslist (queries, opts) {
|
|
|
302
322
|
|
|
303
323
|
var context = {
|
|
304
324
|
ignoreUnknownVersions: opts.ignoreUnknownVersions,
|
|
305
|
-
dangerousExtend: opts.dangerousExtend
|
|
325
|
+
dangerousExtend: opts.dangerousExtend,
|
|
326
|
+
mobileToDesktop: opts.mobileToDesktop
|
|
306
327
|
}
|
|
307
328
|
|
|
308
329
|
env.oldDataWarning(browserslist.data)
|
|
@@ -427,6 +448,15 @@ browserslist.aliases = {
|
|
|
427
448
|
qqandroid: 'and_qq'
|
|
428
449
|
}
|
|
429
450
|
|
|
451
|
+
// Can I Use only provides a few versions for some browsers (e.g. and_chr).
|
|
452
|
+
// Fallback to a similar browser for unknown versions
|
|
453
|
+
browserslist.desktopNames = {
|
|
454
|
+
and_chr: 'chrome',
|
|
455
|
+
and_ff: 'firefox',
|
|
456
|
+
ie_mob: 'ie',
|
|
457
|
+
op_mob: 'opera'
|
|
458
|
+
}
|
|
459
|
+
|
|
430
460
|
// Aliases to work with joined versions like `ios_saf 7.0-7.1`
|
|
431
461
|
browserslist.versionAliases = { }
|
|
432
462
|
|
|
@@ -760,8 +790,8 @@ var QUERIES = [
|
|
|
760
790
|
regexp: /^(\w+)\s+([\d.]+)\s*-\s*([\d.]+)$/i,
|
|
761
791
|
select: function (context, name, from, to) {
|
|
762
792
|
var data = checkName(name)
|
|
763
|
-
from = parseFloat(normalizeVersion(data, from) || from)
|
|
764
|
-
to = parseFloat(normalizeVersion(data, to) || to)
|
|
793
|
+
from = parseFloat(normalizeVersion(data, from, context) || from)
|
|
794
|
+
to = parseFloat(normalizeVersion(data, to, context) || to)
|
|
765
795
|
|
|
766
796
|
function filter (v) {
|
|
767
797
|
var parsed = parseFloat(v)
|
|
@@ -782,7 +812,7 @@ var QUERIES = [
|
|
|
782
812
|
}
|
|
783
813
|
},
|
|
784
814
|
{
|
|
785
|
-
regexp: /^node\s*(>=?|<=?)\s*([\d.]+)
|
|
815
|
+
regexp: /^node\s*(>=?|<=?)\s*([\d.]+)$/i,
|
|
786
816
|
select: function (context, sign, version) {
|
|
787
817
|
var nodeVersions = jsReleases.filter(function (i) {
|
|
788
818
|
return i.name === 'nodejs'
|
|
@@ -879,7 +909,7 @@ var QUERIES = [
|
|
|
879
909
|
select: function (context, name, version) {
|
|
880
910
|
if (/^tp$/i.test(version)) version = 'TP'
|
|
881
911
|
var data = checkName(name)
|
|
882
|
-
var alias = normalizeVersion(data, version)
|
|
912
|
+
var alias = normalizeVersion(data, version, context)
|
|
883
913
|
if (alias) {
|
|
884
914
|
version = alias
|
|
885
915
|
} else {
|
|
@@ -888,7 +918,7 @@ var QUERIES = [
|
|
|
888
918
|
} else {
|
|
889
919
|
alias = version.replace(/\.0$/, '')
|
|
890
920
|
}
|
|
891
|
-
alias = normalizeVersion(data, alias)
|
|
921
|
+
alias = normalizeVersion(data, alias, context)
|
|
892
922
|
if (alias) {
|
|
893
923
|
version = alias
|
|
894
924
|
} else if (context.ignoreUnknownVersions) {
|
package/node.js
CHANGED
|
@@ -291,6 +291,7 @@ module.exports = {
|
|
|
291
291
|
oldDataWarning: function oldDataWarning (agentsObj) {
|
|
292
292
|
if (dataTimeChecked) return
|
|
293
293
|
dataTimeChecked = true
|
|
294
|
+
if (process.env.BROWSERSLIST_IGNORE_OLD_DATA) return
|
|
294
295
|
|
|
295
296
|
var latest = latestReleaseTime(agentsObj)
|
|
296
297
|
var halfYearAgo = Date.now() - TIME_TO_UPDATE_CANIUSE
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "browserslist",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.6.0",
|
|
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,18 +11,13 @@
|
|
|
11
11
|
"license": "MIT",
|
|
12
12
|
"repository": "browserslist/browserslist",
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"caniuse-lite": "^1.0.
|
|
15
|
-
"electron-to-chromium": "^1.3.
|
|
16
|
-
"node-releases": "^1.1.
|
|
14
|
+
"caniuse-lite": "^1.0.30000967",
|
|
15
|
+
"electron-to-chromium": "^1.3.133",
|
|
16
|
+
"node-releases": "^1.1.19"
|
|
17
17
|
},
|
|
18
18
|
"bin": "./cli.js",
|
|
19
19
|
"browser": {
|
|
20
20
|
"./node.js": "./browser.js",
|
|
21
21
|
"path": false
|
|
22
|
-
},
|
|
23
|
-
"husky": {
|
|
24
|
-
"hooks": {
|
|
25
|
-
"pre-commit": "lint-staged"
|
|
26
|
-
}
|
|
27
22
|
}
|
|
28
23
|
}
|