UNPKG

kaven-utils

Version:

Utils for Node.js.

54 lines (53 loc) 2.93 kB
/******************************************************************** * @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>;