browserslistToTargets.js 929 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. const BROWSER_MAPPING = {
  2. and_chr: 'chrome',
  3. and_ff: 'firefox',
  4. ie_mob: 'ie',
  5. op_mob: 'opera',
  6. and_qq: null,
  7. and_uc: null,
  8. baidu: null,
  9. bb: null,
  10. kaios: null,
  11. op_mini: null,
  12. };
  13. function browserslistToTargets(browserslist) {
  14. let targets = {};
  15. for (let browser of browserslist) {
  16. let [name, v] = browser.split(' ');
  17. if (BROWSER_MAPPING[name] === null) {
  18. continue;
  19. }
  20. let version = parseVersion(v);
  21. if (version == null) {
  22. continue;
  23. }
  24. if (targets[name] == null || version < targets[name]) {
  25. targets[name] = version;
  26. }
  27. }
  28. return targets;
  29. }
  30. function parseVersion(version) {
  31. let [major, minor = 0, patch = 0] = version
  32. .split('-')[0]
  33. .split('.')
  34. .map(v => parseInt(v, 10));
  35. if (isNaN(major) || isNaN(minor) || isNaN(patch)) {
  36. return null;
  37. }
  38. return (major << 16) | (minor << 8) | patch;
  39. }
  40. module.exports = browserslistToTargets;