browserslist 4.16.6 → 4.17.1
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/README.md +20 -11
- package/index.js +1 -1
- package/node.js +5 -3
- package/package.json +5 -5
- package/update-db.js +60 -25
package/README.md
CHANGED
|
@@ -98,6 +98,8 @@ Browserslist will take queries from tool option,
|
|
|
98
98
|
* [`browserslist-browserstack`] runs BrowserStack tests for all browsers
|
|
99
99
|
in Browserslist config.
|
|
100
100
|
* [`browserslist-adobe-analytics`] use Adobe Analytics data to target browsers.
|
|
101
|
+
* [`browserslist-new-relic`] generate a custom usage data file for Browserslist
|
|
102
|
+
from your New Relic Browser data.
|
|
101
103
|
* [`caniuse-api`] returns browsers which support some specific feature.
|
|
102
104
|
* Run `npx browserslist` in your project directory to see project’s
|
|
103
105
|
target browsers. This CLI tool is built-in and available in any project
|
|
@@ -110,6 +112,7 @@ Browserslist will take queries from tool option,
|
|
|
110
112
|
[`browserslist-ga-export`]: https://github.com/browserslist/browserslist-ga-export
|
|
111
113
|
[`browserslist-useragent`]: https://github.com/pastelsky/browserslist-useragent
|
|
112
114
|
[`browserslist-ga`]: https://github.com/browserslist/browserslist-ga
|
|
115
|
+
[`browserslist-new-relic`]: https://github.com/syntactic-salt/browserslist-new-relic
|
|
113
116
|
[`caniuse-api`]: https://github.com/Nyalab/caniuse-api
|
|
114
117
|
|
|
115
118
|
|
|
@@ -213,7 +216,7 @@ intersection of all the previous queries:
|
|
|
213
216
|
`last 1 version or chrome > 75 and > 1%` will select
|
|
214
217
|
(`browser last version` or `Chrome since 76`) and `more than 1% marketshare`.
|
|
215
218
|
|
|
216
|
-
There
|
|
219
|
+
There are 3 different ways to combine queries as depicted below. First you start
|
|
217
220
|
with a single query and then we combine the queries to get our final list.
|
|
218
221
|
|
|
219
222
|
Obviously you can *not* start with a `not` combiner, since there is no left-hand
|
|
@@ -235,7 +238,8 @@ You can specify the browser and Node.js versions by queries (case insensitive):
|
|
|
235
238
|
|
|
236
239
|
* `defaults`: Browserslist’s default browsers
|
|
237
240
|
(`> 0.5%, last 2 versions, Firefox ESR, not dead`).
|
|
238
|
-
*
|
|
241
|
+
* By usage statistics:
|
|
242
|
+
* `> 5%`: browsers versions selected by global usage statistics.
|
|
239
243
|
`>=`, `<` and `<=` work too.
|
|
240
244
|
* `> 5% in US`: uses USA usage statistics.
|
|
241
245
|
It accepts [two-letter country code].
|
|
@@ -247,19 +251,22 @@ You can specify the browser and Node.js versions by queries (case insensitive):
|
|
|
247
251
|
* `cover 99.5%`: most popular browsers that provide coverage.
|
|
248
252
|
* `cover 99.5% in US`: same as above, with [two-letter country code].
|
|
249
253
|
* `cover 99.5% in my stats`: uses [custom usage data].
|
|
250
|
-
*
|
|
251
|
-
|
|
252
|
-
`Samsung 4` and `OperaMobile 12.1`.
|
|
253
|
-
* `last 2 versions`: the last 2 versions for *each* browser.
|
|
254
|
+
* Last versions:
|
|
255
|
+
* `last 2 versions`: the last 2 versions for *each* browser.
|
|
254
256
|
* `last 2 Chrome versions`: the last 2 versions of Chrome browser.
|
|
255
257
|
* `last 2 major versions` or `last 2 iOS major versions`:
|
|
256
258
|
all minor/patch releases of last 2 major versions.
|
|
257
|
-
* `
|
|
259
|
+
* `dead`: browsers without official support or updates for 24 months.
|
|
260
|
+
Right now it is `IE 10`, `IE_Mob 11`, `BlackBerry 10`, `BlackBerry 7`,
|
|
261
|
+
`Samsung 4` and `OperaMobile 12.1`.
|
|
262
|
+
* Node.js versions:
|
|
263
|
+
* `node 10` and `node 10.4`: selects latest Node.js `10.x.x`
|
|
258
264
|
or `10.4.x` release.
|
|
259
265
|
* `current node`: Node.js version used by Browserslist right now.
|
|
260
266
|
* `maintained node versions`: all Node.js versions, which are [still maintained]
|
|
261
267
|
by Node.js Foundation.
|
|
262
|
-
*
|
|
268
|
+
* Browsers versions:
|
|
269
|
+
* `iOS 7`: the iOS browser version 7 directly.
|
|
263
270
|
* `Firefox > 20`: versions of Firefox newer than 20.
|
|
264
271
|
`>=`, `<` and `<=` work too. It also works with Node.js.
|
|
265
272
|
* `ie 6-8`: selects an inclusive range of versions.
|
|
@@ -565,9 +572,11 @@ Options:
|
|
|
565
572
|
* `dangerousExtend`: Disable security checks for `extend` query.
|
|
566
573
|
Default is `false`.
|
|
567
574
|
* `mobileToDesktop`: Use desktop browsers if Can I Use doesn’t have data
|
|
568
|
-
about this mobile version.
|
|
569
|
-
|
|
570
|
-
|
|
575
|
+
about this mobile version. Can I Use has only data only about
|
|
576
|
+
latest versions of mobile browsers. By default, `last 2 and_ff versions`
|
|
577
|
+
returns `and_ff 90` and with this option it returns `and_ff 91, and_ff 90`.
|
|
578
|
+
This option may lead to unknown browser version error (in example Can I Use
|
|
579
|
+
doesn’t have data for `and_ff 91` yet). Default is `false`.
|
|
571
580
|
|
|
572
581
|
For non-JS environment and debug purpose you can use CLI tool:
|
|
573
582
|
|
package/index.js
CHANGED
package/node.js
CHANGED
|
@@ -113,6 +113,9 @@ function latestReleaseTime (agents) {
|
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
function normalizeStats (data, stats) {
|
|
116
|
+
if (!data) {
|
|
117
|
+
data = {}
|
|
118
|
+
}
|
|
116
119
|
if (stats && 'dataByBrowser' in stats) {
|
|
117
120
|
stats = stats.dataByBrowser
|
|
118
121
|
}
|
|
@@ -372,9 +375,8 @@ module.exports = {
|
|
|
372
375
|
if (latest !== 0 && latest < halfYearAgo) {
|
|
373
376
|
console.warn(
|
|
374
377
|
'Browserslist: caniuse-lite is outdated. Please run:\n' +
|
|
375
|
-
'npx browserslist@latest --update-db\n' +
|
|
376
|
-
'
|
|
377
|
-
'Why you should do it regularly:\n' +
|
|
378
|
+
' npx browserslist@latest --update-db\n' +
|
|
379
|
+
' Why you should do it regularly: ' +
|
|
378
380
|
'https://github.com/browserslist/browserslist#browsers-data-updating'
|
|
379
381
|
)
|
|
380
382
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "browserslist",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.17.1",
|
|
4
4
|
"description": "Share target browsers between different front-end tools, like Autoprefixer, Stylelint and babel-env-preset",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"caniuse",
|
|
@@ -15,11 +15,11 @@
|
|
|
15
15
|
"license": "MIT",
|
|
16
16
|
"repository": "browserslist/browserslist",
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"caniuse-lite": "^1.0.
|
|
19
|
-
"
|
|
20
|
-
"electron-to-chromium": "^1.3.723",
|
|
18
|
+
"caniuse-lite": "^1.0.30001259",
|
|
19
|
+
"electron-to-chromium": "^1.3.846",
|
|
21
20
|
"escalade": "^3.1.1",
|
|
22
|
-
"
|
|
21
|
+
"nanocolors": "^0.1.5",
|
|
22
|
+
"node-releases": "^1.1.76"
|
|
23
23
|
},
|
|
24
24
|
"engines": {
|
|
25
25
|
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
|
package/update-db.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
var childProcess = require('child_process')
|
|
2
|
-
var
|
|
2
|
+
var nanocolors = require('nanocolors')
|
|
3
3
|
var escalade = require('escalade/sync')
|
|
4
4
|
var path = require('path')
|
|
5
5
|
var fs = require('fs')
|
|
6
6
|
|
|
7
7
|
var BrowserslistError = require('./error')
|
|
8
8
|
|
|
9
|
-
var red =
|
|
10
|
-
var bold =
|
|
11
|
-
var green =
|
|
12
|
-
var yellow =
|
|
9
|
+
var red = nanocolors.red
|
|
10
|
+
var bold = nanocolors.bold
|
|
11
|
+
var green = nanocolors.green
|
|
12
|
+
var yellow = nanocolors.yellow
|
|
13
13
|
|
|
14
14
|
function detectLockfile () {
|
|
15
15
|
var packageDir = escalade('.', function (dir, names) {
|
|
@@ -33,7 +33,10 @@ function detectLockfile () {
|
|
|
33
33
|
} else if (fs.existsSync(lockfileNpm)) {
|
|
34
34
|
return { mode: 'npm', file: lockfileNpm }
|
|
35
35
|
} else if (fs.existsSync(lockfileYarn)) {
|
|
36
|
-
|
|
36
|
+
var lock = { mode: 'yarn', file: lockfileYarn }
|
|
37
|
+
lock.content = fs.readFileSync(lock.file).toString()
|
|
38
|
+
lock.version = /# yarn lockfile v1/.test(lock.content) ? 1 : 2
|
|
39
|
+
return lock
|
|
37
40
|
} else if (fs.existsSync(lockfileShrinkwrap)) {
|
|
38
41
|
return { mode: 'npm', file: lockfileShrinkwrap }
|
|
39
42
|
}
|
|
@@ -44,9 +47,15 @@ function detectLockfile () {
|
|
|
44
47
|
|
|
45
48
|
function getLatestInfo (lock) {
|
|
46
49
|
if (lock.mode === 'yarn') {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
+
if (lock.version === 1) {
|
|
51
|
+
return JSON.parse(
|
|
52
|
+
childProcess.execSync('yarn info caniuse-lite --json').toString()
|
|
53
|
+
).data
|
|
54
|
+
} else {
|
|
55
|
+
return JSON.parse(
|
|
56
|
+
childProcess.execSync('yarn npm info caniuse-lite --json').toString()
|
|
57
|
+
)
|
|
58
|
+
}
|
|
50
59
|
}
|
|
51
60
|
return JSON.parse(
|
|
52
61
|
childProcess.execSync('npm show caniuse-lite --json').toString()
|
|
@@ -187,7 +196,7 @@ function updatePnpmLockfile (lock, latest) {
|
|
|
187
196
|
}
|
|
188
197
|
|
|
189
198
|
function updateLockfile (lock, latest) {
|
|
190
|
-
lock.content = fs.readFileSync(lock.file).toString()
|
|
199
|
+
if (!lock.content) lock.content = fs.readFileSync(lock.file).toString()
|
|
191
200
|
|
|
192
201
|
if (lock.mode === 'npm') {
|
|
193
202
|
return updateNpmLockfile(lock, latest)
|
|
@@ -197,21 +206,7 @@ function updateLockfile (lock, latest) {
|
|
|
197
206
|
return updatePnpmLockfile(lock, latest)
|
|
198
207
|
}
|
|
199
208
|
|
|
200
|
-
|
|
201
|
-
var lock = detectLockfile()
|
|
202
|
-
var latest = getLatestInfo(lock)
|
|
203
|
-
var browsersListRetrievalError
|
|
204
|
-
var oldBrowsersList
|
|
205
|
-
try {
|
|
206
|
-
oldBrowsersList = getBrowsersList()
|
|
207
|
-
} catch (e) {
|
|
208
|
-
browsersListRetrievalError = e
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
print(
|
|
212
|
-
'Latest version: ' + bold(green(latest.version)) + '\n'
|
|
213
|
-
)
|
|
214
|
-
|
|
209
|
+
function updatePackageManually (print, lock, latest) {
|
|
215
210
|
var lockfileData = updateLockfile(lock, latest)
|
|
216
211
|
var caniuseVersions = Object.keys(lockfileData.versions).sort()
|
|
217
212
|
if (caniuseVersions.length === 1 &&
|
|
@@ -260,6 +255,46 @@ module.exports = function updateDB (print) {
|
|
|
260
255
|
yellow('$ ' + del + ' caniuse-lite') + '\n'
|
|
261
256
|
)
|
|
262
257
|
childProcess.execSync(del + ' caniuse-lite')
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
module.exports = function updateDB (print) {
|
|
261
|
+
var lock = detectLockfile()
|
|
262
|
+
var latest = getLatestInfo(lock)
|
|
263
|
+
|
|
264
|
+
var browsersListRetrievalError
|
|
265
|
+
var oldBrowsersList
|
|
266
|
+
try {
|
|
267
|
+
oldBrowsersList = getBrowsersList()
|
|
268
|
+
} catch (e) {
|
|
269
|
+
browsersListRetrievalError = e
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
print(
|
|
273
|
+
'Latest version: ' + bold(green(latest.version)) + '\n'
|
|
274
|
+
)
|
|
275
|
+
|
|
276
|
+
if (lock.mode === 'yarn' && lock.version !== 1) {
|
|
277
|
+
var update = 'yarn up -R'
|
|
278
|
+
print(
|
|
279
|
+
'Updating caniuse-lite version\n' +
|
|
280
|
+
yellow('$ ' + update + ' caniuse-lite') + '\n'
|
|
281
|
+
)
|
|
282
|
+
try {
|
|
283
|
+
childProcess.execSync(update + ' caniuse-lite')
|
|
284
|
+
} catch (e) /* istanbul ignore next */ {
|
|
285
|
+
print(
|
|
286
|
+
red(
|
|
287
|
+
'\n' +
|
|
288
|
+
e.stack + '\n\n' +
|
|
289
|
+
'Problem with `' + update + ' caniuse-lite` call. ' +
|
|
290
|
+
'Run it manually.\n'
|
|
291
|
+
)
|
|
292
|
+
)
|
|
293
|
+
process.exit(1)
|
|
294
|
+
}
|
|
295
|
+
} else {
|
|
296
|
+
updatePackageManually(print, lock, latest)
|
|
297
|
+
}
|
|
263
298
|
|
|
264
299
|
print('caniuse-lite has been successfully updated\n')
|
|
265
300
|
|