core.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. 'use strict';
  2. exports.__esModule = true;
  3. var _postcss = require('postcss');
  4. var atrule = 'atrule';
  5. var decl = 'decl';
  6. var rule = 'rule';
  7. function minimiseWhitespace(node) {
  8. var type = node.type;
  9. if (~[decl, rule, atrule].indexOf(type) && node.raws.before) {
  10. node.raws.before = node.raws.before.replace(/\s/g, '');
  11. }
  12. if (type === decl) {
  13. // Ensure that !important values do not have any excess whitespace
  14. if (node.important) {
  15. node.raws.important = '!important';
  16. }
  17. // Remove whitespaces around ie 9 hack
  18. node.value = node.value.replace(/\s*(\\9)\s*/, '$1');
  19. // Remove extra semicolons and whitespace before the declaration
  20. if (node.raws.before) {
  21. var prev = node.prev();
  22. if (prev && prev.type !== rule) {
  23. node.raws.before = node.raws.before.replace(/;/g, '');
  24. }
  25. }
  26. node.raws.between = ':';
  27. node.raws.semicolon = false;
  28. } else if (type === rule || type === atrule) {
  29. node.raws.between = node.raws.after = '';
  30. node.raws.semicolon = false;
  31. }
  32. }
  33. exports.default = (0, _postcss.plugin)('cssnano-core', function () {
  34. return function (css) {
  35. css.walk(minimiseWhitespace);
  36. // Remove final newline
  37. css.raws.after = '';
  38. };
  39. });
  40. module.exports = exports['default'];