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 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
- * [babel-preset-env]
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
- "last 2 versions"
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/pastelsky/browserslist-useragent
80
- [`browserslist-ga`]: https://github.com/browserslist/browserslist-ga
81
- [`caniuse-api`]: https://github.com/Nyalab/caniuse-api
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 `BlackBerry 7`.
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
- "last 2 versions"
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
- Last 2 versions
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
- 'last 2 versions',
280
- 'ie 9'
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
- "last 2 version",
337
- "ie 9"
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
- last 2 version
350
- ie 9
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 `"> 5%, last 1 version"`
409
- or an array `['> 5%', 'last 1 version']`.
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%, last 2 versions"
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(/^['"]|['"]$/g, '')
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(/^['"]|['"]$/g, '')
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\d+/, ' 0')
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(/ [\d.]+$/, ' 0')]
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
- return ['ie 10', 'ie_mob 10', 'bb 10', 'bb 7']
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.4",
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.30000821",
15
- "electron-to-chromium": "^1.3.41"
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": "^21.0.0",
22
+ "eslint-config-logux": "^22.1.0",
23
23
  "eslint-config-standard": "^11.0.0",
24
- "eslint-plugin-es5": "^1.2.0",
25
- "eslint-plugin-import": "^2.10.0",
26
- "eslint-plugin-jest": "^21.15.0",
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.1",
30
+ "eslint-plugin-standard": "^3.1.0",
31
31
  "fs-extra": "^5.0.0",
32
- "jest": "^22.4.3",
33
- "lint-staged": "^7.0.0",
32
+ "jest": "^22.4.4",
33
+ "lint-staged": "^7.1.2",
34
34
  "pre-commit": "^1.1.3",
35
- "size-limit": "^0.17.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