Search


Search something to see results

TransformOptions

Transform options

interface TransformOptions {
    beautify?: boolean;
    computeCalcExpression?: boolean;
    computeShorthand?: boolean;
    computeTransform?: boolean;
    convertColor?: any;
    cwd?: string;
    expandIfSyntax?: boolean;
    expandNestingRules?: boolean;
    filePath?: string;
    generateScopedName?: (
        localName: string,
        filePath: string,
        pattern: string,
        hashLength?: number,
    ) => string | Promise<string>;
    hashLength?: number;
    indent?: string;
    inlineCssVariables?: boolean;
    inputSourceMap?: string | SourceMapObject;
    lenient?: boolean;
    load?: (
        url: string | { absolute: string; relative: string },
        currentDirectory?: string,
        responseType?: boolean | ResponseType,
    ) => Promise<
        string
        | ArrayBuffer
        | ReadableStream<Uint8Array<ArrayBufferLike>>,
    >;
    minify?: boolean;
    module?:
        | boolean
        | ModuleSyncOptions
        | ModuleCaseTransformEnum
        | ModuleScopeEnumOptions;
    naming?: ModuleCaseTransformEnum;
    nestingRules?: boolean;
    newLine?: string;
    output?: string;
    parseColor?: boolean;
    pass?: number;
    pattern?: string;
    preserveLicense?: boolean;
    removeCharset?: boolean;
    removeComments?: boolean;
    removeDuplicateDeclarations?: string
    | boolean
    | string[];
    removeEmpty?: boolean;
    removePrefix?: boolean;
    resolve?: (
        url: string,
        currentUrl: string,
        currentWorkingDirectory?: string,
    ) => { absolute: string; relative: string };
    resolveImport?: boolean;
    resolveUrls?: boolean;
    scoped?: boolean | ModuleScopeEnumOptions;
    signal?: AbortSignal;
    source?: SourceFile | null;
    sourcemap?: boolean | "inline";
    sourcesMap?: Map<number, SourceFile>;
    src?: string;
    validation?: boolean | ValidationLevel;
    visitor?:
        | GenericVisitorAstNodeSyncHandlerMap<T>
        | GenericVisitorAstNodeHandlerMap<T>
        | VisitorNodeMap
        | VisitorNodeMap[];
    withParents?: boolean;
}

Hierarchy (View Summary)

Index

Properties

beautify?: boolean

Pretty print css

const result = await transform(css, {beautify: true});
computeCalcExpression?: boolean

Compute css math functions

computeShorthand?: boolean

Compute shorthand properties

computeTransform?: boolean

Compute css transform functions

convertColor?: any

Convert color to the specified color space. 'true' will convert to HEX

cwd?: string

Current working directory

expandIfSyntax?: boolean

Experimental, convert css if() function into legacy syntax.

expandNestingRules?: boolean

Expand nested rules

filePath?: string

Module output file path. it is used to generate the scoped name. if not provided, options.src will be used

generateScopedName?: (
    localName: string,
    filePath: string,
    pattern: string,
    hashLength?: number,
) => string | Promise<string>

Function to generate scoped name

Type Declaration

    • (
          localName: string,
          filePath: string,
          pattern: string,
          hashLength?: number,
      ): string | Promise<string>
    • Parameters

      Returns string | Promise<string>

hashLength?: number

Generated scope hash length. the default is 5

indent?: string

Indention string

inlineCssVariables?: boolean

Inline css variables

inputSourceMap?: string | SourceMapObject

Input source map

lenient?: boolean

Lenient validation. retain nodes that failed validation

load?: (
    url: string | { absolute: string; relative: string },
    currentDirectory?: string,
    responseType?: boolean | ResponseType,
) => Promise<
    string
    | ArrayBuffer
    | ReadableStream<Uint8Array<ArrayBufferLike>>,
>

Custom URL and file loader.

minify?: boolean

Enable minification

module?:
    | boolean
    | ModuleSyncOptions
    | ModuleCaseTransformEnum
    | ModuleScopeEnumOptions

CSS modules options

optional. function change the case of the scoped name and the class mapping

nestingRules?: boolean

Generate nested rules

newLine?: string

New line string

output?: string

Output file. Used for url resolution

parseColor?: boolean

Parse color tokens

pass?: number

Define minification passes.

pattern?: string

The pattern used to generate scoped names. the supported placeholders are:

  • name: the file base name without the extension
  • hash: the file path hash
  • local: the local name
  • path: the file path
  • folder: the folder name
  • ext: the file extension

the pattern can optionally have a maximum number of characters:

pattern: '[local:2]-[hash:5]'

the hash pattern can take an algorithm, a maximum number of characters or both:

pattern: '[local]-[hash:base64:5]'

or

pattern: '[local]-[hash:5]'

or

pattern: '[local]-[hash:sha1]'

supported hash algorithms are:

  • base64
  • hex
  • base64url
  • sha1
  • sha256
  • sha384
  • sha512

import {transform, ModuleCaseTransformEnum} from '@tbela99/css-parser';
import type {TransformResult} from '@tbela99/css-parser';
css = `
:local(.className) {
background: red;
color: yellow;
}

:local(.subClass) {
composes: className;
background: blue;
}
`;

let result: TransformResult = await transform(css, {

beautify:true,
module: {
pattern: '[local]-[hash:sha256]'
}

});

console.log(result.code);

generated css

.className-b629f {
background: red;
color: #ff0
}
.subClass-a0c35 {
background: blue
}
preserveLicense?: boolean

Preserve license comments. License comments are comments that start with '/*!'

removeCharset?: boolean

Remove at-rule charset

removeComments?: boolean

Remove comments

removeDuplicateDeclarations?: string | boolean | string[]

Remove duplicate declarations from the same rule. if passed as a string array, duplicated declarations are removed, except for those in the array


import {transform} from '@tbela99/css-parser';

const css = `

.table {

width: 100%;
width: calc(100% + 40px);
margin-left: 20px;
margin-left: min(100% , 20px)
}

`;
const result = await transform(css, {

beautify: true,
validation: true,
removeDuplicateDeclarations: ['width']
}
);

console.log(result.code);
removeEmpty?: boolean

Remove empty ast nodes

removePrefix?: boolean

Remove css prefix

resolve?: (
    url: string,
    currentUrl: string,
    currentWorkingDirectory?: string,
) => { absolute: string; relative: string }

Url and path resolver

resolveImport?: boolean

Resolve import

resolveUrls?: boolean

Resolve urls

scoped?: boolean | ModuleScopeEnumOptions

Use local scope vs global scope

signal?: AbortSignal

Abort signal

Example: abort after 10 seconds


const result = await parse(cssString, {
signal: AbortSignal.timeout(10000)
});
source?: SourceFile | null

Source file to be used for sourcemap

sourcemap?: boolean | "inline"

Include sourcemap in the ast. Sourcemap info is always generated

sourcesMap?: Map<number, SourceFile>

Source file to be used for sourcemap

src?: string

Source file to be used for sourcemap

validation?: boolean | ValidationLevel

Enable CSS validation. Using ValidationLevel as value is deprecated and will be removed

see ValidationLevel

Node visitor VisitorNodeMap[]

withParents?: boolean

Render the node along with its parents