Fork me on GitHub

关于browserslist的配置

  其实上次迁移的过程中有看到package.json中有一段browserslist的配置,但是也没特别在意,后面又去官方文档研究了一波,输出了这篇文章。

Browserslist

目的

  browserslist是为了兼容在不同运行环境(不同版本浏览器、服务端Node)下的前端代码的。

使用范围(via官方)

  1. Autoprefixer
  2. Babel
  3. postcss-preset-env
  4. eslint-plugin-compat
  5. stylelint-no-unsupported-browser-features
  6. postcss-normalize
  7. obsolete-webpack-plugin

配置位置

package.json

1
2
3
4
5
6
 "browserslist": [
"last 1 version",
"> 1%",
"maintained node versions",
"not dead"
]

.browserslistrc

1
2
3
4
last 1 version
> 1%
maintained node versions
not dead

具体参数意义

  首先browserslist的配置内容可以理解为一个查询集合,我们根据这个集合组合来定制我们项目的兼容范围。

  1. > 5%:兼容全球浏览器使用数量占比5%以上的类型。数值可以根据实际场景自定义,同理,除>也支持>=<<=
  2. > 5% in US:数据采集范围->国家(双字母构成,CHJP等等)。
  3. > 5% in alt-AS:数据采集范围->大洲(双字母后缀,alt-afalt-as等等)。
  4. > 5% in my stats:数据采集范围->自身的WEB项目,需要结合browserslist-ga-export,该包使我们无需登陆Google账号就能生成我们站点的访问浏览器版本数据,browserslist-stats.json
  5. cover 99.5%: 覆盖全球99.5%的浏览器类型,即支持绝大多数的现代浏览器。
  6. cover 99.5% in US:与前面同理。
  7. cover 99.5% in my stats:与前面同理。
  8. maintained node versions:兼容所有仍被支持的NODE版本。
  9. node 10 and node 10.4:兼容最新的10.x.x10.4.x版本。
  10. current node:兼容当前环境下的NODE版本。
  11. extends browserslist-config-mycompany:从browserslist-config-mycompany中继承配置。
  12. ie 6-8设置兼容IE版本范围。
  13. not ie <= 8设置不支持的IE版本范围。
  14. Firefox > 20设置FF版本范围,同理也支持>=<<=
  15. iOS 7:设置支持的iOS浏览器版本。
  16. last 2 versions:每个浏览器支持的最新2个版本。
  17. last 2 Chrome versions:Chrome浏览器支持的最新2个版本。
  18. last 2 major versions:每个浏览器支持的最新2个主分支版本。
  19. last 2 years:最近2年支持的版本。
  20. since 2015:自2015年来支持的版本。
  21. dead:一年内未被官方维护更新的版本。
  22. defaultsbrowserslist的默认配置(> 0.5%, last 2 versions, Firefox ESR, not dead)。

  以上条件可以进行集合操作,通过or,进行并集操作,通过and进行交集操作,not取非包含关系集合。