|
|
'use strict';/** * @author Ben Briggs * @license MIT * @module cssnano:preset:default * @overview * * This default preset for cssnano only includes transforms that make no * assumptions about your CSS other than what is passed in. In previous * iterations of cssnano, assumptions were made about your CSS which caused * output to look different in certain use cases, but not others. These * transforms have been moved from the defaults to other presets, to make * this preset require only minimal configuration. */
const cssDeclarationSorter = require('css-declaration-sorter');const postcssDiscardComments = require('postcss-discard-comments');const postcssReduceInitial = require('postcss-reduce-initial');const postcssMinifyGradients = require('postcss-minify-gradients');const postcssSvgo = require('postcss-svgo');const postcssReduceTransforms = require('postcss-reduce-transforms');const postcssConvertValues = require('postcss-convert-values');const postcssCalc = require('postcss-calc');const postcssColormin = require('postcss-colormin');const postcssOrderedValues = require('postcss-ordered-values');const postcssMinifySelectors = require('postcss-minify-selectors');const postcssMinifyParams = require('postcss-minify-params');const postcssNormalizeCharset = require('postcss-normalize-charset');const postcssMinifyFontValues = require('postcss-minify-font-values');const postcssNormalizeUrl = require('postcss-normalize-url');const postcssMergeLonghand = require('postcss-merge-longhand');const postcssDiscardDuplicates = require('postcss-discard-duplicates');const postcssDiscardOverridden = require('postcss-discard-overridden');const postcssNormalizeRepeatStyle = require('postcss-normalize-repeat-style');const postcssMergeRules = require('postcss-merge-rules');const postcssDiscardEmpty = require('postcss-discard-empty');const postcssUniqueSelectors = require('postcss-unique-selectors');const postcssNormalizeString = require('postcss-normalize-string');const postcssNormalizePositions = require('postcss-normalize-positions');const postcssNormalizeWhitespace = require('postcss-normalize-whitespace');const postcssNormalizeUnicode = require('postcss-normalize-unicode');const postcssNormalizeDisplayValues = require('postcss-normalize-display-values');const postcssNormalizeTimingFunctions = require('postcss-normalize-timing-functions');const { rawCache } = require('cssnano-utils');
/** @typedef {{discardComments?: false | import('postcss-discard-comments').Options & { exclude?: true},reduceInitial?: false | { exclude?: true}minifyGradients?: false | { exclude?: true}svgo?: false | import('postcss-svgo').Options & { exclude?: true},reduceTransforms?: false | { exclude?: true}convertValues?: false | import('postcss-convert-values').Options & { exclude?: true},calc?: false | import('postcss-calc').PostCssCalcOptions & { exclude?: true},colormin?: false | Record<string, any> & { exclude?: true},orderedValues?: false | { exclude?: true},minifySelectors?: false | { exclude?: true},minifyParams?: false | { exclude?: true},normalizeCharset?: false | import('postcss-normalize-charset').Options & { exclude?: true},minifyFontValues?: false | import('postcss-minify-font-values').Options & { exclude?: true},normalizeUrl?: false | import('postcss-normalize-url').Options & { exclude?: true},mergeLonghand?: false | { exclude?: true},discardDuplicates?: false | { exclude?: true},discardOverridden?: false | { exclude?: true},normalizeRepeatStyle?: false | { exclude?: true},mergeRules?: false | { exclude?: true},discardEmpty?: false | { exclude?: true},uniqueSelectors?: false | { exclude?: true},normalizeString?: false | import('postcss-normalize-string').Options & { exclude?: true},normalizePositions?: false | { exclude?: true},normalizeWhitespace?: false| { exclude?: true},normalizeUnicode?: false | { exclude?: true},normalizeDisplayValues?: false | { exclude?: true},normalizeTimingFunctions?: false | { exclude?: true},rawCache?: false | { exclude?: true}}} Options */
const defaultOpts = { convertValues: { length: false, }, normalizeCharset: { add: false, }, cssDeclarationSorter: { keepOverrides: true, },};
/** * @param {Options} opts * @return {{plugins: [import('postcss').PluginCreator<any>, boolean | Record<string, any> | undefined][]}} */function defaultPreset(opts = {}) { const options = Object.assign({}, defaultOpts, opts);
/** @type {[import('postcss').PluginCreator<any>, boolean | Record<string, any> | undefined][]} **/ const plugins = [ [postcssDiscardComments, options.discardComments], [postcssMinifyGradients, options.minifyGradients], [postcssReduceInitial, options.reduceInitial], [postcssSvgo, options.svgo], [postcssNormalizeDisplayValues, options.normalizeDisplayValues], [postcssReduceTransforms, options.reduceTransforms], [postcssColormin, options.colormin], [postcssNormalizeTimingFunctions, options.normalizeTimingFunctions], [postcssCalc, options.calc], [postcssConvertValues, options.convertValues], [postcssOrderedValues, options.orderedValues], [postcssMinifySelectors, options.minifySelectors], [postcssMinifyParams, options.minifyParams], [postcssNormalizeCharset, options.normalizeCharset], [postcssDiscardOverridden, options.discardOverridden], [postcssNormalizeString, options.normalizeString], [postcssNormalizeUnicode, options.normalizeUnicode], [postcssMinifyFontValues, options.minifyFontValues], [postcssNormalizeUrl, options.normalizeUrl], [postcssNormalizeRepeatStyle, options.normalizeRepeatStyle], [postcssNormalizePositions, options.normalizePositions], [postcssNormalizeWhitespace, options.normalizeWhitespace], [postcssMergeLonghand, options.mergeLonghand], [postcssDiscardDuplicates, options.discardDuplicates], [postcssMergeRules, options.mergeRules], [postcssDiscardEmpty, options.discardEmpty], [postcssUniqueSelectors, options.uniqueSelectors], [cssDeclarationSorter, options.cssDeclarationSorter], [rawCache, options.rawCache], ];
return { plugins };}
module.exports = defaultPreset;
|