You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
6.1 KiB
131 lines
6.1 KiB
'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;
|
|
|