index.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310
  1. 'use strict';
  2. exports.__esModule = true;
  3. var _decamelize = require('decamelize');
  4. var _decamelize2 = _interopRequireDefault(_decamelize);
  5. var _defined = require('defined');
  6. var _defined2 = _interopRequireDefault(_defined);
  7. var _objectAssign = require('object-assign');
  8. var _objectAssign2 = _interopRequireDefault(_objectAssign);
  9. var _postcss = require('postcss');
  10. var _postcss2 = _interopRequireDefault(_postcss);
  11. var _postcssFilterPlugins2 = require('postcss-filter-plugins');
  12. var _postcssFilterPlugins3 = _interopRequireDefault(_postcssFilterPlugins2);
  13. var _postcssDiscardComments = require('postcss-discard-comments');
  14. var _postcssDiscardComments2 = _interopRequireDefault(_postcssDiscardComments);
  15. var _postcssReduceInitial = require('postcss-reduce-initial');
  16. var _postcssReduceInitial2 = _interopRequireDefault(_postcssReduceInitial);
  17. var _postcssMinifyGradients = require('postcss-minify-gradients');
  18. var _postcssMinifyGradients2 = _interopRequireDefault(_postcssMinifyGradients);
  19. var _postcssSvgo = require('postcss-svgo');
  20. var _postcssSvgo2 = _interopRequireDefault(_postcssSvgo);
  21. var _postcssReduceTransforms = require('postcss-reduce-transforms');
  22. var _postcssReduceTransforms2 = _interopRequireDefault(_postcssReduceTransforms);
  23. var _autoprefixer = require('autoprefixer');
  24. var _autoprefixer2 = _interopRequireDefault(_autoprefixer);
  25. var _postcssZindex = require('postcss-zindex');
  26. var _postcssZindex2 = _interopRequireDefault(_postcssZindex);
  27. var _postcssConvertValues = require('postcss-convert-values');
  28. var _postcssConvertValues2 = _interopRequireDefault(_postcssConvertValues);
  29. var _postcssCalc = require('postcss-calc');
  30. var _postcssCalc2 = _interopRequireDefault(_postcssCalc);
  31. var _postcssColormin = require('postcss-colormin');
  32. var _postcssColormin2 = _interopRequireDefault(_postcssColormin);
  33. var _postcssOrderedValues = require('postcss-ordered-values');
  34. var _postcssOrderedValues2 = _interopRequireDefault(_postcssOrderedValues);
  35. var _postcssMinifySelectors = require('postcss-minify-selectors');
  36. var _postcssMinifySelectors2 = _interopRequireDefault(_postcssMinifySelectors);
  37. var _postcssMinifyParams = require('postcss-minify-params');
  38. var _postcssMinifyParams2 = _interopRequireDefault(_postcssMinifyParams);
  39. var _postcssNormalizeCharset = require('postcss-normalize-charset');
  40. var _postcssNormalizeCharset2 = _interopRequireDefault(_postcssNormalizeCharset);
  41. var _postcssMinifyFontValues = require('postcss-minify-font-values');
  42. var _postcssMinifyFontValues2 = _interopRequireDefault(_postcssMinifyFontValues);
  43. var _postcssDiscardUnused = require('postcss-discard-unused');
  44. var _postcssDiscardUnused2 = _interopRequireDefault(_postcssDiscardUnused);
  45. var _postcssNormalizeUrl = require('postcss-normalize-url');
  46. var _postcssNormalizeUrl2 = _interopRequireDefault(_postcssNormalizeUrl);
  47. var _postcssMergeIdents = require('postcss-merge-idents');
  48. var _postcssMergeIdents2 = _interopRequireDefault(_postcssMergeIdents);
  49. var _postcssReduceIdents = require('postcss-reduce-idents');
  50. var _postcssReduceIdents2 = _interopRequireDefault(_postcssReduceIdents);
  51. var _postcssMergeLonghand = require('postcss-merge-longhand');
  52. var _postcssMergeLonghand2 = _interopRequireDefault(_postcssMergeLonghand);
  53. var _postcssDiscardDuplicates = require('postcss-discard-duplicates');
  54. var _postcssDiscardDuplicates2 = _interopRequireDefault(_postcssDiscardDuplicates);
  55. var _postcssDiscardOverridden = require('postcss-discard-overridden');
  56. var _postcssDiscardOverridden2 = _interopRequireDefault(_postcssDiscardOverridden);
  57. var _postcssMergeRules = require('postcss-merge-rules');
  58. var _postcssMergeRules2 = _interopRequireDefault(_postcssMergeRules);
  59. var _postcssDiscardEmpty = require('postcss-discard-empty');
  60. var _postcssDiscardEmpty2 = _interopRequireDefault(_postcssDiscardEmpty);
  61. var _postcssUniqueSelectors = require('postcss-unique-selectors');
  62. var _postcssUniqueSelectors2 = _interopRequireDefault(_postcssUniqueSelectors);
  63. var _functionOptimiser = require('./lib/functionOptimiser');
  64. var _functionOptimiser2 = _interopRequireDefault(_functionOptimiser);
  65. var _filterOptimiser = require('./lib/filterOptimiser');
  66. var _filterOptimiser2 = _interopRequireDefault(_filterOptimiser);
  67. var _normalizeString = require('./lib/normalizeString');
  68. var _normalizeString2 = _interopRequireDefault(_normalizeString);
  69. var _normalizeUnicode = require('./lib/normalizeUnicode');
  70. var _normalizeUnicode2 = _interopRequireDefault(_normalizeUnicode);
  71. var _reduceDisplayValues = require('./lib/reduceDisplayValues');
  72. var _reduceDisplayValues2 = _interopRequireDefault(_reduceDisplayValues);
  73. var _reduceBackgroundRepeat = require('./lib/reduceBackgroundRepeat');
  74. var _reduceBackgroundRepeat2 = _interopRequireDefault(_reduceBackgroundRepeat);
  75. var _reducePositions = require('./lib/reducePositions');
  76. var _reducePositions2 = _interopRequireDefault(_reducePositions);
  77. var _core = require('./lib/core');
  78. var _core2 = _interopRequireDefault(_core);
  79. var _reduceTimingFunctions = require('./lib/reduceTimingFunctions');
  80. var _reduceTimingFunctions2 = _interopRequireDefault(_reduceTimingFunctions);
  81. var _styleCache = require('./lib/styleCache');
  82. var _styleCache2 = _interopRequireDefault(_styleCache);
  83. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  84. // Processors
  85. var processors = {
  86. postcssFilterPlugins: function postcssFilterPlugins() {
  87. return (0, _postcssFilterPlugins3.default)({ silent: true });
  88. },
  89. postcssDiscardComments: _postcssDiscardComments2.default,
  90. postcssMinifyGradients: _postcssMinifyGradients2.default,
  91. postcssReduceInitial: _postcssReduceInitial2.default,
  92. postcssSvgo: _postcssSvgo2.default,
  93. reduceDisplayValues: _reduceDisplayValues2.default,
  94. postcssReduceTransforms: _postcssReduceTransforms2.default,
  95. autoprefixer: _autoprefixer2.default,
  96. postcssZindex: _postcssZindex2.default,
  97. postcssConvertValues: _postcssConvertValues2.default,
  98. reduceTimingFunctions: _reduceTimingFunctions2.default,
  99. postcssCalc: _postcssCalc2.default,
  100. postcssColormin: _postcssColormin2.default,
  101. postcssOrderedValues: _postcssOrderedValues2.default,
  102. postcssMinifySelectors: _postcssMinifySelectors2.default,
  103. postcssMinifyParams: _postcssMinifyParams2.default,
  104. postcssNormalizeCharset: _postcssNormalizeCharset2.default,
  105. postcssDiscardOverridden: _postcssDiscardOverridden2.default,
  106. normalizeString: _normalizeString2.default,
  107. normalizeUnicode: _normalizeUnicode2.default,
  108. // minify-font-values should be run before discard-unused
  109. postcssMinifyFontValues: _postcssMinifyFontValues2.default,
  110. postcssDiscardUnused: _postcssDiscardUnused2.default,
  111. postcssNormalizeUrl: _postcssNormalizeUrl2.default,
  112. functionOptimiser: _functionOptimiser2.default,
  113. filterOptimiser: _filterOptimiser2.default,
  114. reduceBackgroundRepeat: _reduceBackgroundRepeat2.default,
  115. reducePositions: _reducePositions2.default,
  116. core: _core2.default,
  117. // Optimisations after this are sensitive to previous optimisations in
  118. // the pipe, such as whitespace normalising/selector re-ordering
  119. postcssMergeIdents: _postcssMergeIdents2.default,
  120. postcssReduceIdents: _postcssReduceIdents2.default,
  121. postcssMergeLonghand: _postcssMergeLonghand2.default,
  122. postcssDiscardDuplicates: _postcssDiscardDuplicates2.default,
  123. postcssMergeRules: _postcssMergeRules2.default,
  124. postcssDiscardEmpty: _postcssDiscardEmpty2.default,
  125. postcssUniqueSelectors: _postcssUniqueSelectors2.default,
  126. styleCache: _styleCache2.default
  127. };
  128. var defaultOptions = {
  129. autoprefixer: {
  130. add: false
  131. },
  132. postcssConvertValues: {
  133. length: false
  134. },
  135. postcssNormalizeCharset: {
  136. add: false
  137. }
  138. };
  139. var safeOptions = {
  140. postcssConvertValues: {
  141. length: false
  142. },
  143. postcssDiscardUnused: {
  144. disable: true
  145. },
  146. postcssMergeIdents: {
  147. disable: true
  148. },
  149. postcssReduceIdents: {
  150. counterStyle: false,
  151. gridTemplate: false,
  152. keyframes: false
  153. },
  154. postcssNormalizeUrl: {
  155. stripWWW: false
  156. },
  157. postcssZindex: {
  158. disable: true
  159. }
  160. };
  161. var cssnano = _postcss2.default.plugin('cssnano', function () {
  162. var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  163. // Prevent PostCSS from throwing when safe is defined
  164. if (options.safe === true) {
  165. options.isSafe = true;
  166. options.safe = null;
  167. }
  168. var safe = options.isSafe;
  169. var proc = (0, _postcss2.default)();
  170. var warnings = [];
  171. if (typeof options.fontFamily !== 'undefined' || typeof options.minifyFontWeight !== 'undefined') {
  172. warnings.push('The fontFamily & minifyFontWeight options have been ' + 'consolidated into minifyFontValues, and are now deprecated.');
  173. if (!options.minifyFontValues) {
  174. options.minifyFontValues = options.fontFamily;
  175. }
  176. }
  177. if (typeof options.singleCharset !== 'undefined') {
  178. warnings.push('The singleCharset option has been renamed to ' + 'normalizeCharset, and is now deprecated.');
  179. options.normalizeCharset = options.singleCharset;
  180. }
  181. if (warnings.length) {
  182. proc.use(_postcss2.default.plugin('cssnano', function () {
  183. return function (css, result) {
  184. return warnings.forEach(function (w) {
  185. return result.warn(w);
  186. });
  187. };
  188. }));
  189. }
  190. Object.keys(processors).forEach(function (plugin) {
  191. var shortName = plugin.replace('postcss', '');
  192. shortName = shortName.slice(0, 1).toLowerCase() + shortName.slice(1);
  193. var opts = (0, _defined2.default)(options[shortName], options[plugin], options[(0, _decamelize2.default)(plugin, '-')]);
  194. if (opts === false) {
  195. opts = { disable: true };
  196. }
  197. opts = (0, _objectAssign2.default)({}, defaultOptions[plugin], safe ? safeOptions[plugin] : null, opts);
  198. if (!opts.disable) {
  199. proc.use(processors[plugin](opts));
  200. }
  201. });
  202. return proc;
  203. });
  204. cssnano.process = function (css) {
  205. var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  206. options.map = options.map || (options.sourcemap ? true : null);
  207. return (0, _postcss2.default)([cssnano(options)]).process(css, options);
  208. };
  209. exports.default = cssnano;
  210. module.exports = exports['default'];