kaven-utils
Version:
Utils for Node.js.
54 lines (53 loc) • 2.93 kB
TypeScript
/********************************************************************
* @author: Kaven
* @email: kaven@wuwenkai.com
* @website: http://blog.kaven.xyz
* @file: [Kaven-Utils] /src/KavenUtility.MinifyCss.ts
* @create: 2025-10-23 11:21:26.506
* @modify: 2025-10-23 15:09:18.405
* @version: 6.1.1
* @times: 5
* @lines: 82
* @copyright: Copyright © 2025 Kaven. All Rights Reserved.
* @description: [description]
* @license: [license]
********************************************************************/
import { IMinifyCssOptions } from "./base/Interfaces.js";
/**
* Recursively minifies CSS files starting from one or more source paths.
*
* This asynchronous function walks the provided source path(s) (files or directories),
* finds files with the ".css" extension, and replaces each CSS file's contents with
* a minified version produced by PostCSS + cssnano. Directory traversal is performed
* iteratively and files are processed sequentially (no parallel writes).
*
* Behavior and important details:
* - The `options.src` value may be a single string path or an array of string paths.
* - If a path points to a file, it is processed only when its extension is ".css".
* - If a path points to a directory, the directory is read and its entries are enqueued
* for processing. By default, directories named "node_modules" are skipped unless
* `options.includeNodeModules` is true.
* - File reads and writes use UTF-8 encoding. Existing CSS files are overwritten in place.
* - Errors obtained while calling `stat` are logged via `options.logger.Warn` and the
* path is skipped; other IO/processing errors are surfaced via thrown exceptions
* from the underlying async operations unless caught by callers.
* - The function logs successful minification via `options.logger.Info` and warnings
* (e.g., ignored node_modules or stat errors) via `options.logger.Warn`.
*
* Parameters (I<MinifyCss>Options shape summary):
* - options.src: string | string[] — one or more filesystem paths (files or directories)
* - options.includeNodeModules?: boolean — when true, traverses into "node_modules" directories
* - options.logger?: { Info?: (msg: string) => void; Warn?: (msg: string) => void; } — optional logger
*
* @param options - Configuration options for the minification run (see summary above).
* @returns A Promise that resolves when all provided paths have been processed.
* @remarks
* - This function performs destructive updates (overwrites CSS files). Ensure you have backups
* or version control in place if you need to preserve original files.
* - The function is intentionally sequential: if you require parallel processing for performance,
* perform concurrency control externally.
*
* @since 6.1.1
* @version 2025-10-23
*/
export declare function MinifyCss(options: IMinifyCssOptions): Promise<void>;