browserslist 4.16.5 → 4.17.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/README.md +15 -8
- package/index.js +1 -1
- package/node.js +5 -3
- package/package.json +5 -5
- package/update-db.js +58 -20
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.
|
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.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",
|
|
@@ -15,11 +15,11 @@
|
|
|
15
15
|
"license": "MIT",
|
|
16
16
|
"repository": "browserslist/browserslist",
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"caniuse-lite": "^1.0.
|
|
19
|
-
"colorette": "^1.
|
|
20
|
-
"electron-to-chromium": "^1.3.
|
|
18
|
+
"caniuse-lite": "^1.0.30001254",
|
|
19
|
+
"colorette": "^1.3.0",
|
|
20
|
+
"electron-to-chromium": "^1.3.830",
|
|
21
21
|
"escalade": "^3.1.1",
|
|
22
|
-
"node-releases": "^1.1.
|
|
22
|
+
"node-releases": "^1.1.75"
|
|
23
23
|
},
|
|
24
24
|
"engines": {
|
|
25
25
|
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
|
package/update-db.js
CHANGED
|
@@ -24,6 +24,7 @@ function detectLockfile () {
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
var lockfileNpm = path.join(packageDir, 'package-lock.json')
|
|
27
|
+
var lockfileShrinkwrap = path.join(packageDir, 'npm-shrinkwrap.json')
|
|
27
28
|
var lockfileYarn = path.join(packageDir, 'yarn.lock')
|
|
28
29
|
var lockfilePnpm = path.join(packageDir, 'pnpm-lock.yaml')
|
|
29
30
|
|
|
@@ -32,7 +33,12 @@ function detectLockfile () {
|
|
|
32
33
|
} else if (fs.existsSync(lockfileNpm)) {
|
|
33
34
|
return { mode: 'npm', file: lockfileNpm }
|
|
34
35
|
} else if (fs.existsSync(lockfileYarn)) {
|
|
35
|
-
|
|
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
|
|
40
|
+
} else if (fs.existsSync(lockfileShrinkwrap)) {
|
|
41
|
+
return { mode: 'npm', file: lockfileShrinkwrap }
|
|
36
42
|
}
|
|
37
43
|
throw new BrowserslistError(
|
|
38
44
|
'No lockfile found. Run "npm install", "yarn install" or "pnpm install"'
|
|
@@ -41,9 +47,15 @@ function detectLockfile () {
|
|
|
41
47
|
|
|
42
48
|
function getLatestInfo (lock) {
|
|
43
49
|
if (lock.mode === 'yarn') {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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
|
+
}
|
|
47
59
|
}
|
|
48
60
|
return JSON.parse(
|
|
49
61
|
childProcess.execSync('npm show caniuse-lite --json').toString()
|
|
@@ -184,7 +196,7 @@ function updatePnpmLockfile (lock, latest) {
|
|
|
184
196
|
}
|
|
185
197
|
|
|
186
198
|
function updateLockfile (lock, latest) {
|
|
187
|
-
lock.content = fs.readFileSync(lock.file).toString()
|
|
199
|
+
if (!lock.content) lock.content = fs.readFileSync(lock.file).toString()
|
|
188
200
|
|
|
189
201
|
if (lock.mode === 'npm') {
|
|
190
202
|
return updateNpmLockfile(lock, latest)
|
|
@@ -194,21 +206,7 @@ function updateLockfile (lock, latest) {
|
|
|
194
206
|
return updatePnpmLockfile(lock, latest)
|
|
195
207
|
}
|
|
196
208
|
|
|
197
|
-
|
|
198
|
-
var lock = detectLockfile()
|
|
199
|
-
var latest = getLatestInfo(lock)
|
|
200
|
-
var browsersListRetrievalError
|
|
201
|
-
var oldBrowsersList
|
|
202
|
-
try {
|
|
203
|
-
oldBrowsersList = getBrowsersList()
|
|
204
|
-
} catch (e) {
|
|
205
|
-
browsersListRetrievalError = e
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
print(
|
|
209
|
-
'Latest version: ' + bold(green(latest.version)) + '\n'
|
|
210
|
-
)
|
|
211
|
-
|
|
209
|
+
function updatePackageManually (print, lock, latest) {
|
|
212
210
|
var lockfileData = updateLockfile(lock, latest)
|
|
213
211
|
var caniuseVersions = Object.keys(lockfileData.versions).sort()
|
|
214
212
|
if (caniuseVersions.length === 1 &&
|
|
@@ -257,6 +255,46 @@ module.exports = function updateDB (print) {
|
|
|
257
255
|
yellow('$ ' + del + ' caniuse-lite') + '\n'
|
|
258
256
|
)
|
|
259
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
|
+
}
|
|
260
298
|
|
|
261
299
|
print('caniuse-lite has been successfully updated\n')
|
|
262
300
|
|