summaryrefslogtreecommitdiff
path: root/node_modules/cssnano/src/index.js
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2026-05-18 23:10:59 +0800
committerlittleblack111 <littleblack11111@gmail.com>2026-05-18 23:41:44 +0800
commitfc87c009806dcc98867f6b58efe29b042aa01dee (patch)
tree8f59b3f4a5b66e9dfef2d40c8d318e258a521228 /node_modules/cssnano/src/index.js
parent3336b2356ee6152d9c6ae59bd9b87ccbc0958407 (diff)
node: updatemain
Diffstat (limited to 'node_modules/cssnano/src/index.js')
-rw-r--r--node_modules/cssnano/src/index.js164
1 files changed, 0 insertions, 164 deletions
diff --git a/node_modules/cssnano/src/index.js b/node_modules/cssnano/src/index.js
deleted file mode 100644
index 20c38975..00000000
--- a/node_modules/cssnano/src/index.js
+++ /dev/null
@@ -1,164 +0,0 @@
-'use strict';
-const path = require('path');
-/** @type {any} */
-const postcss = require('postcss');
-const { lilconfigSync } = require('lilconfig');
-
-const cssnano = 'cssnano';
-
-/** @typedef {{preset?: any, plugins?: any[], configFile?: string}} Options */
-/**
- * @param {string} moduleId
- * @returns {boolean}
- */
-function isResolvable(moduleId) {
- try {
- require.resolve(moduleId);
- return true;
- } catch (e) {
- return false;
- }
-}
-
-/**
- * preset can be one of four possibilities:
- * preset = 'default'
- * preset = ['default', {}]
- * preset = function <- to be invoked
- * preset = {plugins: []} <- already invoked function
- *
- * @param {any} preset
- * @return {[import('postcss').PluginCreator<any>, boolean | Record<string, any> | undefined][]}}
- */
-function resolvePreset(preset) {
- let fn, options;
-
- if (Array.isArray(preset)) {
- fn = preset[0];
- options = preset[1];
- } else {
- fn = preset;
- options = {};
- }
-
- // For JS setups where we invoked the preset already
- if (fn.plugins) {
- return fn.plugins;
- }
-
- // Provide an alias for the default preset, as it is built-in.
- if (fn === 'default') {
- return require('cssnano-preset-default')(options).plugins;
- }
-
- // For non-JS setups; we'll need to invoke the preset ourselves.
- if (typeof fn === 'function') {
- return fn(options).plugins;
- }
-
- // Try loading a preset from node_modules
- if (isResolvable(fn)) {
- return require(fn)(options).plugins;
- }
-
- const sugar = `cssnano-preset-${fn}`;
-
- // Try loading a preset from node_modules (sugar)
- if (isResolvable(sugar)) {
- return require(sugar)(options).plugins;
- }
-
- // If all else fails, we probably have a typo in the config somewhere
- throw new Error(
- `Cannot load preset "${fn}". Please check your configuration for errors and try again.`
- );
-}
-
-/**
- * cssnano will look for configuration firstly as options passed
- * directly to it, and failing this it will use lilconfig to
- * load an external file.
-
- * @param {Options} options
- */
-function resolveConfig(options) {
- if (options.preset) {
- return resolvePreset(options.preset);
- }
-
- /** @type {string | undefined} */
- let searchPath = process.cwd();
- let configPath = undefined;
-
- if (options.configFile) {
- searchPath = undefined;
- configPath = path.resolve(process.cwd(), options.configFile);
- }
-
- const configExplorer = lilconfigSync(cssnano, {
- searchPlaces: [
- 'package.json',
- '.cssnanorc',
- '.cssnanorc.json',
- '.cssnanorc.js',
- 'cssnano.config.js',
- ],
- });
- const config = configPath
- ? configExplorer.load(configPath)
- : configExplorer.search(searchPath);
-
- if (config === null) {
- return resolvePreset('default');
- }
-
- return resolvePreset(config.config.preset || config.config);
-}
-
-/**
- * @type {import('postcss').PluginCreator<Options>}
- * @param {Options=} options
- * @return {import('postcss').Processor}
- */
-function cssnanoPlugin(options = {}) {
- if (Array.isArray(options.plugins)) {
- if (!options.preset || !options.preset.plugins) {
- options.preset = { plugins: [] };
- }
-
- options.plugins.forEach((plugin) => {
- if (Array.isArray(plugin)) {
- const [pluginDef, opts = {}] = plugin;
- if (typeof pluginDef === 'string' && isResolvable(pluginDef)) {
- options.preset.plugins.push([require(pluginDef), opts]);
- } else {
- options.preset.plugins.push([pluginDef, opts]);
- }
- } else if (typeof plugin === 'string' && isResolvable(plugin)) {
- options.preset.plugins.push([require(plugin), {}]);
- } else {
- options.preset.plugins.push([plugin, {}]);
- }
- });
- }
- const plugins = [];
- const nanoPlugins = resolveConfig(options);
- for (const nanoPlugin of nanoPlugins) {
- if (Array.isArray(nanoPlugin)) {
- const [processor, opts] = nanoPlugin;
- if (
- typeof opts === 'undefined' ||
- (typeof opts === 'object' && !opts.exclude) ||
- (typeof opts === 'boolean' && opts === true)
- ) {
- plugins.push(processor(opts));
- }
- } else {
- plugins.push(nanoPlugin);
- }
- }
- return postcss(plugins);
-}
-
-cssnanoPlugin.postcss = true;
-module.exports = cssnanoPlugin;