Merge pull request #32466 from GolaWaya/master

Updated clean-css type definitions to 4.2.1
This commit is contained in:
Benjamin Lichtman
2019-01-24 15:39:46 -08:00
committed by GitHub
11 changed files with 969 additions and 154 deletions
+39 -10
View File
@@ -1,18 +1,20 @@
// Original by Tanguy Krotoff <https://github.com/tkrotoff>
// Updated by Andrew Potter <https://github.com/GolaWaya>
import * as CleanCSS from 'clean-css';
var source = 'a{font-weight:bold;}';
var minified = new CleanCSS().minify(source).styles;
let source = 'a{font-weight:bold;}';
console.log(new CleanCSS().minify(source).styles);
var source = '@import url(http://path/to/remote/styles);';
new CleanCSS().minify(source, function (error, minified) {
source = '@import url(http://path/to/remote/styles);';
new CleanCSS().minify(source, (error: any, minified: CleanCSS.Output): void => {
console.log(minified.styles);
});
const pathToOutputDirectory = 'path';
new CleanCSS({ sourceMap: true, target: pathToOutputDirectory })
.minify(source, function (error, minified) {
new CleanCSS({ sourceMap: true, rebaseTo: pathToOutputDirectory })
.minify(source, (error: any, minified: CleanCSS.Output): void => {
// access minified.sourceMap for SourceMapGenerator object
// see https://github.com/mozilla/source-map/#sourcemapgenerator for more details
// see https://github.com/jakubpawlowicz/clean-css/blob/master/bin/cleancss#L114 on how it's used in clean-css' CLI
@@ -20,15 +22,15 @@ new CleanCSS({ sourceMap: true, target: pathToOutputDirectory })
});
const inputSourceMapAsString = 'input';
new CleanCSS({ sourceMap: inputSourceMapAsString, target: pathToOutputDirectory })
.minify(source, function (error, minified) {
new CleanCSS({ sourceMap: true, rebaseTo: pathToOutputDirectory })
.minify(source, inputSourceMapAsString, (error: any, minified: CleanCSS.Output): void => {
// access minified.sourceMap to access SourceMapGenerator object
// see https://github.com/mozilla/source-map/#sourcemapgenerator for more details
// see https://github.com/jakubpawlowicz/clean-css/blob/master/bin/cleancss#L114 on how it's used in clean-css' CLI
console.log(minified.sourceMap);
});
new CleanCSS({ sourceMap: true, target: pathToOutputDirectory }).minify({
new CleanCSS({ sourceMap: true, rebaseTo: pathToOutputDirectory }).minify({
'path/to/source/1': {
styles: '...styles...',
sourceMap: '...source-map...'
@@ -37,7 +39,7 @@ new CleanCSS({ sourceMap: true, target: pathToOutputDirectory }).minify({
styles: '...styles...',
sourceMap: '...source-map...'
}
}, function (error, minified) {
}, (error: any, minified: CleanCSS.Output): void => {
// access minified.sourceMap as above
console.log(minified.sourceMap);
});
@@ -52,3 +54,30 @@ new CleanCSS().minify({
styles: 'contents of file two'
}
});
// new tests - promise resolution
new CleanCSS({ returnPromise: true, rebaseTo: pathToOutputDirectory }).minify(source)
.then((minified: CleanCSS.Output): void => {
console.log(minified.styles);
}).catch((error: any): void => {
console.log(error);
}
);
new CleanCSS({ returnPromise: true, sourceMap: true }).minify(source)
.then((minified: CleanCSS.Output): void => {
// access minified.sourceMap as above
console.log(minified.sourceMap);
}).catch((error: any): void => {
console.log(error);
}
);
new CleanCSS({ returnPromise: true, sourceMap: true }).minify(source, inputSourceMapAsString)
.then((minified: CleanCSS.Output): void => {
// access minified.sourceMap as above
console.log(minified.sourceMap);
}).catch((error: any): void => {
console.log(error);
}
);
+624 -65
View File
@@ -1,108 +1,667 @@
// Type definitions for clean-css v3.4.9
// Type definitions for clean-css 4.2
// Project: https://github.com/jakubpawlowicz/clean-css
// Definitions by: Tanguy Krotoff <https://github.com/tkrotoff>
// Andrew Potter <https://github.com/GolaWaya>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
/// <reference types="node" />
import { RequestOptions as HttpsRequestOptions } from "https";
import { RequestOptions as HttpRequestOptions } from "http";
declare namespace CleanCSS {
/**
* Options passed when initializing a new instance of CleanCSS
*/
interface Options {
// Set to false to disable advanced optimizations - selector & property merging, reduction, etc.
advanced?: boolean;
/**
* Controls compatibility mode used; defaults to ie10+ using `'*'`.
* Compatibility hash exposes the following properties: `colors`, `properties`, `selectors`, and `units`
*/
compatibility?: "*" | "ie9" | "ie8" | "ie7" | CompatibilityOptions;
// Set to false to disable aggressive merging of properties.
aggressiveMerging?: boolean;
/**
* Controls a function for handling remote requests; Defaults to the build in `loadRemoteResource` function
*/
fetch?: (uri: string, inlineRequest: HttpRequestOptions | HttpsRequestOptions, inlineTimeout: number, done: (message: string | number, body: string) => void) => void;
// Turns on benchmarking mode measuring time spent on cleaning up (run npm run bench to see example)
benchmark?: boolean;
/**
* Controls output CSS formatting; defaults to `false`.
* Format hash exposes the following properties: `breaks`, `breakWith`, `indentBy`, `indentWith`, `spaces`, and `wrapAt`.
*/
format?: "beautify" | "keep-breaks" | FormatOptions | false;
// Enables compatibility mode
compatibility?: Object;
/**
* inline option whitelists which @import rules will be processed. Defaults to `'local'`
* Accepts the following values:
* 'local': enables local inlining;
* 'remote': enables remote inlining;
* 'none': disables all inlining;
* 'all': enables all inlining, same as ['local', 'remote'];
* '[uri]': enables remote inlining from the specified uri;
* '![url]': disables remote inlining from the specified uri;
*/
inline?: ReadonlyArray<string> | false;
// Set to true to get minification statistics under stats property (see test/custom-test.js for examples)
debug?: boolean;
/**
* Controls extra options for inlining remote @import rules
*/
inlineRequest?: HttpRequestOptions | HttpsRequestOptions;
// A hash of options for @import inliner, see test/protocol-imports-test.js for examples, or this comment for a proxy use case.
inliner?: Object;
/**
* Controls number of milliseconds after which inlining a remote @import fails; defaults to `5000`;
*/
inlineTimeout?: number;
// Whether to keep line breaks (default is false)
keepBreaks?: boolean;
/**
* Controls optimization level used; defaults to `1`.
* Level hash exposes `1`, and `2`.
*/
level?: 0 | 1 | 2 | OptimizationsOptions;
// * for keeping all (default), 1 for keeping first one only, 0 for removing all
keepSpecialComments?: string | number;
// Whether to merge @media at-rules (default is true)
mediaMerging?: boolean;
// Whether to process @import rules
processImport?: boolean;
// A list of @import rules, can be ['all'] (default), ['local'], ['remote'], or a blacklisted path e.g. ['!fonts.googleapis.com']
processImportFrom?: Array<string>;
// Set to false to skip URL rebasing
/**
* Controls URL rebasing; defaults to `true`;
*/
rebase?: boolean;
// Path to resolve relative @import rules and URLs
relativeTo?: string;
/**
* controls a directory to which all URLs are rebased, most likely the directory under which the output file
* will live; defaults to the current directory;
*/
rebaseTo?: string;
// Set to false to disable restructuring in advanced optimizations
restructuring?: boolean;
/**
* If you prefer clean-css to return a Promise object then you need to explicitely ask for it; defaults to `false`
*/
returnPromise?: boolean;
// Path to resolve absolute @import rules and rebase relative URLs
root?: string;
/**
* Controls whether an output source map is built; defaults to `false`
*/
sourceMap?: boolean;
// Rounding precision; defaults to 2; -1 disables rounding
roundingPrecision?: number;
// Set to true to enable semantic merging mode which assumes BEM-like content (default is false as it's highly likely this will break your stylesheets - use with caution!)
semanticMerging?: boolean;
// Set to false to skip shorthand compacting (default is true unless sourceMap is set when it's false)
shorthandCompacting?: boolean;
// Exposes source map under sourceMap property, e.g. new CleanCSS().minify(source).sourceMap (default is false) If input styles are a product of CSS preprocessor (Less, Sass) an input source map can be passed as a string.
sourceMap?: boolean | string;
// Set to true to inline sources inside a source map's sourcesContent field (defaults to false) It is also required to process inlined sources from input source maps.
/**
* Controls embedding sources inside a source map's `sourcesContent` field; defaults to `false`
*/
sourceMapInlineSources?: boolean;
// Path to a folder or an output file to which rebase all URLs
target?: string;
}
/**
* Output returned when calling minify functions
*/
interface Output {
// Optimized output CSS as a string
/**
* Optimized output CSS as a string
*/
styles: string;
// Output source map (if requested with sourceMap option)
/**
* Output source map if requested with `sourceMap` option
*/
sourceMap: string;
// A list of errors raised
errors: Array<string>;
/**
* A list of errors raised
*/
errors: string[];
// A list of warnings raised
warnings: Array<string>;
/**
* A list of warnings raised
*/
warnings: string[];
// A hash of statistic information (if requested with debug option)
/**
* Contains statistics on the minify process
*/
stats: {
// Original content size (after import inlining)
/**
* Original content size after import inlining
*/
originalSize: number;
// Optimized content size
/**
* Optimized content size
*/
minifiedSize: number;
// Time spent on optimizations
/**
* Time spent on optimizations in milliseconds
*/
timeSpent: number;
// A ratio of output size to input size (e.g. 25% if content was reduced from 100 bytes to 75 bytes)
/**
* `(originalSize - minifiedSize) / originalSize`, e.g. 0.25 if size is reduced from 100 bytes to 75 bytes
*/
efficiency: number;
};
}
/**
* Fine grained configuration for compatibility option
*/
interface CompatibilityOptions {
/**
* A hash of compatibility options related to color
*/
colors?: {
/**
* Controls `rgba()` / `hsla()` color support; defaults to `true`
*/
opacity?: boolean;
};
/**
* A hash of properties that can be set with compatibility
*/
properties?: {
/**
* Controls background-clip merging into shorthand; defaults to `true`
*/
backgroundClipMerging?: boolean;
/**
* Controls background-origin merging into shorthand; defaults to `true`
*/
backgroundOriginMerging?: boolean;
/**
* Controls background-size merging into shorthand; defaults to `true`
*/
backgroundSizeMerging?: boolean;
/**
* controls color optimizations; defaults to `true`
*/
colors?: boolean,
/**
* Controls keeping IE bang hack; defaults to `false`
*/
ieBangHack?: boolean;
/**
* Controls keeping IE `filter` / `-ms-filter`; defaults to `false`
*/
ieFilters?: boolean;
/**
* Controls keeping IE prefix hack; defaults to `false`
*/
iePrefixHack?: boolean;
/**
* Controls keeping IE suffix hack; defaults to `false`
*/
ieSuffixHack?: boolean;
/**
* Controls property merging based on understandably; defaults to `true`
*/
merging?: boolean;
/**
* Controls shortening pixel units into `pc`, `pt`, or `in` units; defaults to `false`
*/
shorterLengthUnits?: false;
/**
* Controls keeping space after closing brace - `url() no-repeat` into `url()no-repeat`; defaults to `true`
*/
spaceAfterClosingBrace?: true;
/**
* Controls keeping quoting inside `url()`; defaults to `false`
*/
urlQuotes?: boolean;
/**
* Controls removal of units `0` value; defaults to `true`
*/
zeroUnits?: boolean;
};
/**
* A hash of options related to compatibility of selectors
*/
selectors?: {
/**
* Controls extra space before `nav` element; defaults to `false`
*/
adjacentSpace?: boolean;
/**
* Controls removal of IE7 selector hacks, e.g. `*+html...`; defaults to `true`
*/
ie7Hack?: boolean;
/**
* Controls a whitelist of mergeable pseudo classes; defaults to `[':active', ...]`
*/
mergeablePseudoClasses?: ReadonlyArray<string>;
/**
* Controls a whitelist of mergeable pseudo elements; defaults to `['::after', ...]`
*/
mergeablePseudoElements: ReadonlyArray<string>;
/**
* Controls maximum number of selectors in a single rule (since 4.1.0); defaults to `8191`
*/
mergeLimit: number;
/**
* Controls merging of rules with multiple pseudo classes / elements (since 4.1.0); defaults to `true`
*/
multiplePseudoMerging: boolean;
};
/**
* A hash of options related to comparability of supported units
*/
units?: {
/**
* Controls treating `ch` as a supported unit; defaults to `true`
*/
ch?: boolean;
/**
* Controls treating `in` as a supported unit; defaults to `true`
*/
in?: boolean;
/**
* Controls treating `pc` as a supported unit; defaults to `true`
*/
pc?: boolean;
/**
* Controls treating `pt` as a supported unit; defaults to `true`
*/
pt?: boolean;
/**
* Controls treating `rem` as a supported unit; defaults to `true`
*/
rem?: boolean;
/**
* Controls treating `vh` as a supported unit; defaults to `true`
*/
vh?: boolean;
/**
* Controls treating `vm` as a supported unit; defaults to `true`
*/
vm?: boolean;
/**
* Controls treating `vmax` as a supported unit; defaults to `true`
*/
vmax?: boolean;
/**
* Controls treating `vmin` as a supported unit; defaults to `true`
*/
vmin?: boolean;
};
}
/**
* Fine grained options for configuring the CSS formatting
*/
interface FormatOptions {
/**
* Controls where to insert breaks
*/
breaks?: {
/**
* Controls if a line break comes after an at-rule; e.g. `@charset`; defaults to `false`
*/
afterAtRule?: boolean;
/**
* Controls if a line break comes after a block begins; e.g. `@media`; defaults to `false`
*/
afterBlockBegins?: boolean;
/**
* Controls if a line break comes after a block ends, defaults to `false`
*/
afterBlockEnds?: boolean;
/**
* Controls if a line break comes after a comment; defaults to `false`
*/
afterComment?: boolean;
/**
* Controls if a line break comes after a property; defaults to `false`
*/
afterProperty?: boolean;
/**
* Controls if a line break comes after a rule begins; defaults to `false`
*/
afterRuleBegins?: boolean;
/**
* Controls if a line break comes after a rule ends; defaults to `false`
*/
afterRuleEnds?: boolean;
/**
* Controls if a line break comes before a block ends; defaults to `false`
*/
beforeBlockEnds?: boolean;
/**
* Controls if a line break comes between selectors; defaults to `false`
*/
betweenSelectors?: boolean;
};
/**
* Controls the new line character, can be `'\r\n'` or `'\n'`(aliased as `'windows'` and `'unix'`
* or `'crlf'` and `'lf'`); defaults to system one, so former on Windows and latter on Unix
*/
breakWith?: string;
/**
* Controls number of characters to indent with; defaults to `0`
*/
indentBy?: number;
/**
* Controls a character to indent with, can be `'space'` or `'tab'`; defaults to `'space'`
*/
indentWith?: "space" | "tab";
/**
* Controls where to insert spaces
*/
spaces?: {
/**
* Controls if spaces come around selector relations; e.g. `div > a`; defaults to `false`
*/
aroundSelectorRelation?: boolean;
/**
* Controls if a space comes before a block begins; e.g. `.block {`; defaults to `false`
*/
beforeBlockBegins?: boolean;
/**
* Controls if a space comes before a value; e.g. `width: 1rem`; defaults to `false`
*/
beforeValue?: boolean;
};
/**
* Controls maximum line length; defaults to `false`
*/
wrapAt?: false | number;
}
/**
* Fine grained options for configuring optimizations
*/
interface OptimizationsOptions {
1?: {
/**
* Sets all optimizations at this level unless otherwise specified
*/
all?: boolean;
/**
* Controls `@charset` moving to the front of a stylesheet; defaults to `true`
*/
cleanupCharsets?: boolean;
/**
* Controls URL normalization; defaults to `true`
*/
normalizeUrls?: boolean;
/**
* Controls `background` property optimizations; defaults to `true`
*/
optimizeBackground?: boolean;
/**
* Controls `border-radius` property optimizations; defaults to `true`
*/
optimizeBorderRadius?: boolean;
/**
* Controls `filter` property optimizations; defaults to `true`
*/
optimizeFilter?: boolean;
/**
* Controls `font` property optimizations; defaults to `true`
*/
optimizeFont?: boolean;
/**
* Controls `font-weight` property optimizations; defaults to `true`
*/
optimizeFontWeight?: boolean;
/**
* Controls `outline` property optimizations; defaults to `true`
*/
optimizeOutline?: boolean;
/**
* Controls removing empty rules and nested blocks; defaults to `true`
*/
removeEmpty?: boolean;
/**
* Controls removing negative paddings; defaults to `true`
*/
removeNegativePaddings?: boolean;
/**
* Controls removing quotes when unnecessary; defaults to `true`
*/
removeQuotes?: boolean;
/**
* Controls removing unused whitespace; defaults to `true`
*/
removeWhitespace?: boolean;
/**
* Contols removing redundant zeros; defaults to `true`
*/
replaceMultipleZeros?: boolean;
/**
* Controls replacing time units with shorter values; defaults to `true`
*/
replaceTimeUnits?: boolean;
/**
* Controls replacing zero values with units; defaults to `true`
*/
replaceZeroUnits?: boolean;
/**
* Rounds pixel values to `N` decimal places; `false` disables rounding; defaults to `false`
*/
roundingPrecision?: boolean;
/**
* denotes selector sorting method; can be `'natural'` or `'standard'`, `'none'`, or false (the last two
* since 4.1.0); defaults to `'standard'`
*/
selectorsSortingMethod?: "standard" | "natural" | "none";
/**
* denotes a number of /*! ... * / comments preserved; defaults to `all`
*/
specialComments?: string;
/**
* Controls at-rules (e.g. `@charset`, `@import`) optimizing; defaults to `true`
*/
tidyAtRules?: boolean;
/**
* Controls block scopes (e.g. `@media`) optimizing; defaults to `true`
*/
tidyBlockScopes?: boolean;
/**
* Controls selectors optimizing; defaults to `true`
*/
tidySelectors?: boolean;
/**
* Controls removing trailing semicolons in rule; defaults to `false` - means remove
*/
semicolonAfterLastProperty?: boolean;
/**
* Defines a callback for fine-grained property optimization; defaults to no-op
*/
transform?: (propertyName: string, propertyValue: string, selector?: string) => string;
};
2?: {
/**
* Sets all optimizations at this level unless otherwise specified
*/
all?: boolean;
/**
* Controls adjacent rules merging; defaults to true
*/
mergeAdjacentRules?: boolean;
/**
* Controls merging properties into shorthands; defaults to true
*/
mergeIntoShorthands?: boolean;
/**
* Controls `@media` merging; defaults to true
*/
mergeMedia?: boolean;
/**
* Controls non-adjacent rule merging; defaults to true
*/
mergeNonAdjacentRules?: boolean;
/**
* Controls semantic merging; defaults to false
*/
mergeSemantically?: boolean;
/**
* Controls property overriding based on understandably; defaults to true
*/
overrideProperties?: boolean;
/**
* Controls removing empty rules and nested blocks; defaults to `true`
*/
removeEmpty?: boolean;
/**
* Controls non-adjacent rule reducing; defaults to true
*/
reduceNonAdjacentRules?: boolean;
/**
* Controls duplicate `@font-face` removing; defaults to true
*/
removeDuplicateFontRules?: boolean;
/**
* Controls duplicate `@media` removing; defaults to true
*/
removeDuplicateMediaBlocks?: boolean;
/**
* Controls duplicate rules removing; defaults to true
*/
removeDuplicateRules?: boolean;
/**
* Controls unused at rule removing; defaults to false (available since 4.1.0)
*/
removeUnusedAtRules?: boolean;
/**
* Controls rule restructuring; defaults to false
*/
restructureRules?: boolean;
/**
* Controls which properties won't be optimized, defaults to `[]` which means all will be optimized (since 4.1.0)
*/
skipProperties?: ReadonlyArray<string>;
};
}
/**
* Hash of input source(s). Passing an array of hashes allows you to explicitly specify the order in which the input files
* are concatenated. Whereas when you use a single hash the order is determined by the traversal order of object properties
*/
interface Source {
/**
* Path to file
*/
[path: string]: {
/**
* The contents of the file, should be css
*/
styles: string;
/**
* The source map of the file, if needed
*/
sourceMap?: string;
};
}
/**
* Callback type when fetch is used
*/
type FetchCallback = (message: string | number, body: string) => void;
/**
* Union of all types acceptable as input for the minify function
*/
type Sources = string | ReadonlyArray<string> | Source | ReadonlyArray<Source> | Buffer;
/**
* Union type for both types of minifier functions
*/
type Minifier = MinifierOutput | MinifierPromise;
/**
* Interface exposed when a new CleanCSS object is created
*/
interface MinifierOutput {
minify(sources: Sources, callback?: (error: any, output: Output) => void): Output;
minify(sources: Sources, sourceMap: string, callback?: (error: any, output: Output) => void): Output;
}
/**
* Interface exposed when a new CleanCSS object is created with returnPromise set to true
*/
interface MinifierPromise {
minify(sources: Sources, sourceMap?: string): Promise<Output>;
}
/**
* Constructor interface for CleanCSS
*/
interface Constructor {
new(options: Options & { returnPromise: true }): MinifierPromise;
new(options?: Options): MinifierOutput;
}
}
declare class CleanCSS {
constructor(options?: CleanCSS.Options);
minify(sources: string | Array<string> | Object, callback?: (error: any, minified: CleanCSS.Output) => void): CleanCSS.Output;
}
/**
* Creates a new CleanCSS object which can be used to minify css
*/
declare const CleanCSS: CleanCSS.Constructor;
export = CleanCSS;
+1 -77
View File
@@ -1,79 +1,3 @@
{
"extends": "dtslint/dt.json",
"rules": {
"adjacent-overload-signatures": false,
"array-type": false,
"arrow-return-shorthand": false,
"ban-types": false,
"callable-types": false,
"comment-format": false,
"dt-header": false,
"eofline": false,
"export-just-namespace": false,
"import-spacing": false,
"interface-name": false,
"interface-over-type-literal": false,
"jsdoc-format": false,
"max-line-length": false,
"member-access": false,
"new-parens": false,
"no-any-union": false,
"no-boolean-literal-compare": false,
"no-conditional-assignment": false,
"no-consecutive-blank-lines": false,
"no-construct": false,
"no-declare-current-package": false,
"no-duplicate-imports": false,
"no-duplicate-variable": false,
"no-empty-interface": false,
"no-for-in-array": false,
"no-inferrable-types": false,
"no-internal-module": false,
"no-irregular-whitespace": false,
"no-mergeable-namespace": false,
"no-misused-new": false,
"no-namespace": false,
"no-object-literal-type-assertion": false,
"no-padding": false,
"no-redundant-jsdoc": false,
"no-redundant-jsdoc-2": false,
"no-redundant-undefined": false,
"no-reference-import": false,
"no-relative-import-in-test": false,
"no-self-import": false,
"no-single-declare-module": false,
"no-string-throw": false,
"no-unnecessary-callback-wrapper": false,
"no-unnecessary-class": false,
"no-unnecessary-generics": false,
"no-unnecessary-qualifier": false,
"no-unnecessary-type-assertion": false,
"no-useless-files": false,
"no-var-keyword": false,
"no-var-requires": false,
"no-void-expression": false,
"no-trailing-whitespace": false,
"object-literal-key-quotes": false,
"object-literal-shorthand": false,
"one-line": false,
"one-variable-per-declaration": false,
"only-arrow-functions": false,
"prefer-conditional-expression": false,
"prefer-const": false,
"prefer-declare-function": false,
"prefer-for-of": false,
"prefer-method-signature": false,
"prefer-template": false,
"radix": false,
"semicolon": false,
"space-before-function-paren": false,
"space-within-parens": false,
"strict-export-declare-modifiers": false,
"trim-file": false,
"triple-equals": false,
"typedef-whitespace": false,
"unified-signatures": false,
"void-return": false,
"whitespace": false
}
"extends": "dtslint/dt.json"
}
+54
View File
@@ -0,0 +1,54 @@
import * as CleanCSS from 'clean-css';
var source = 'a{font-weight:bold;}';
var minified = new CleanCSS().minify(source).styles;
var source = '@import url(http://path/to/remote/styles);';
new CleanCSS().minify(source, function (error, minified) {
console.log(minified.styles);
});
const pathToOutputDirectory = 'path';
new CleanCSS({ sourceMap: true, target: pathToOutputDirectory })
.minify(source, function (error, minified) {
// access minified.sourceMap for SourceMapGenerator object
// see https://github.com/mozilla/source-map/#sourcemapgenerator for more details
// see https://github.com/jakubpawlowicz/clean-css/blob/master/bin/cleancss#L114 on how it's used in clean-css' CLI
console.log(minified.sourceMap);
});
const inputSourceMapAsString = 'input';
new CleanCSS({ sourceMap: inputSourceMapAsString, target: pathToOutputDirectory })
.minify(source, function (error, minified) {
// access minified.sourceMap to access SourceMapGenerator object
// see https://github.com/mozilla/source-map/#sourcemapgenerator for more details
// see https://github.com/jakubpawlowicz/clean-css/blob/master/bin/cleancss#L114 on how it's used in clean-css' CLI
console.log(minified.sourceMap);
});
new CleanCSS({ sourceMap: true, target: pathToOutputDirectory }).minify({
'path/to/source/1': {
styles: '...styles...',
sourceMap: '...source-map...'
},
'path/to/source/2': {
styles: '...styles...',
sourceMap: '...source-map...'
}
}, function (error, minified) {
// access minified.sourceMap as above
console.log(minified.sourceMap);
});
new CleanCSS().minify(['path/to/file/one', 'path/to/file/two']);
new CleanCSS().minify({
'path/to/file/one': {
styles: 'contents of file one'
},
'path/to/file/two': {
styles: 'contents of file two'
}
});
+108
View File
@@ -0,0 +1,108 @@
// Type definitions for clean-css v3.4.9
// Project: https://github.com/jakubpawlowicz/clean-css
// Definitions by: Tanguy Krotoff <https://github.com/tkrotoff>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
declare namespace CleanCSS {
interface Options {
// Set to false to disable advanced optimizations - selector & property merging, reduction, etc.
advanced?: boolean;
// Set to false to disable aggressive merging of properties.
aggressiveMerging?: boolean;
// Turns on benchmarking mode measuring time spent on cleaning up (run npm run bench to see example)
benchmark?: boolean;
// Enables compatibility mode
compatibility?: Object;
// Set to true to get minification statistics under stats property (see test/custom-test.js for examples)
debug?: boolean;
// A hash of options for @import inliner, see test/protocol-imports-test.js for examples, or this comment for a proxy use case.
inliner?: Object;
// Whether to keep line breaks (default is false)
keepBreaks?: boolean;
// * for keeping all (default), 1 for keeping first one only, 0 for removing all
keepSpecialComments?: string | number;
// Whether to merge @media at-rules (default is true)
mediaMerging?: boolean;
// Whether to process @import rules
processImport?: boolean;
// A list of @import rules, can be ['all'] (default), ['local'], ['remote'], or a blacklisted path e.g. ['!fonts.googleapis.com']
processImportFrom?: Array<string>;
// Set to false to skip URL rebasing
rebase?: boolean;
// Path to resolve relative @import rules and URLs
relativeTo?: string;
// Set to false to disable restructuring in advanced optimizations
restructuring?: boolean;
// Path to resolve absolute @import rules and rebase relative URLs
root?: string;
// Rounding precision; defaults to 2; -1 disables rounding
roundingPrecision?: number;
// Set to true to enable semantic merging mode which assumes BEM-like content (default is false as it's highly likely this will break your stylesheets - use with caution!)
semanticMerging?: boolean;
// Set to false to skip shorthand compacting (default is true unless sourceMap is set when it's false)
shorthandCompacting?: boolean;
// Exposes source map under sourceMap property, e.g. new CleanCSS().minify(source).sourceMap (default is false) If input styles are a product of CSS preprocessor (Less, Sass) an input source map can be passed as a string.
sourceMap?: boolean | string;
// Set to true to inline sources inside a source map's sourcesContent field (defaults to false) It is also required to process inlined sources from input source maps.
sourceMapInlineSources?: boolean;
// Path to a folder or an output file to which rebase all URLs
target?: string;
}
interface Output {
// Optimized output CSS as a string
styles: string;
// Output source map (if requested with sourceMap option)
sourceMap: string;
// A list of errors raised
errors: Array<string>;
// A list of warnings raised
warnings: Array<string>;
// A hash of statistic information (if requested with debug option)
stats: {
// Original content size (after import inlining)
originalSize: number;
// Optimized content size
minifiedSize: number;
// Time spent on optimizations
timeSpent: number;
// A ratio of output size to input size (e.g. 25% if content was reduced from 100 bytes to 75 bytes)
efficiency: number;
};
}
}
declare class CleanCSS {
constructor(options?: CleanCSS.Options);
minify(sources: string | Array<string> | Object, callback?: (error: any, minified: CleanCSS.Output) => void): CleanCSS.Output;
}
export = CleanCSS;
+32
View File
@@ -0,0 +1,32 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": [
"es6",
"dom"
],
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": false,
"strictFunctionTypes": true,
"baseUrl": "../../",
"typeRoots": [
"../../"
],
"paths": {
"clean-css": [
"clean-css/v3"
],
"clean-css/*": [
"clean-css/v3/*"
]
},
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true
},
"files": [
"index.d.ts",
"clean-css-tests.ts"
]
}
+79
View File
@@ -0,0 +1,79 @@
{
"extends": "dtslint/dt.json",
"rules": {
"adjacent-overload-signatures": false,
"array-type": false,
"arrow-return-shorthand": false,
"ban-types": false,
"callable-types": false,
"comment-format": false,
"dt-header": false,
"eofline": false,
"export-just-namespace": false,
"import-spacing": false,
"interface-name": false,
"interface-over-type-literal": false,
"jsdoc-format": false,
"max-line-length": false,
"member-access": false,
"new-parens": false,
"no-any-union": false,
"no-boolean-literal-compare": false,
"no-conditional-assignment": false,
"no-consecutive-blank-lines": false,
"no-construct": false,
"no-declare-current-package": false,
"no-duplicate-imports": false,
"no-duplicate-variable": false,
"no-empty-interface": false,
"no-for-in-array": false,
"no-inferrable-types": false,
"no-internal-module": false,
"no-irregular-whitespace": false,
"no-mergeable-namespace": false,
"no-misused-new": false,
"no-namespace": false,
"no-object-literal-type-assertion": false,
"no-padding": false,
"no-redundant-jsdoc": false,
"no-redundant-jsdoc-2": false,
"no-redundant-undefined": false,
"no-reference-import": false,
"no-relative-import-in-test": false,
"no-self-import": false,
"no-single-declare-module": false,
"no-string-throw": false,
"no-unnecessary-callback-wrapper": false,
"no-unnecessary-class": false,
"no-unnecessary-generics": false,
"no-unnecessary-qualifier": false,
"no-unnecessary-type-assertion": false,
"no-useless-files": false,
"no-var-keyword": false,
"no-var-requires": false,
"no-void-expression": false,
"no-trailing-whitespace": false,
"object-literal-key-quotes": false,
"object-literal-shorthand": false,
"one-line": false,
"one-variable-per-declaration": false,
"only-arrow-functions": false,
"prefer-conditional-expression": false,
"prefer-const": false,
"prefer-declare-function": false,
"prefer-for-of": false,
"prefer-method-signature": false,
"prefer-template": false,
"radix": false,
"semicolon": false,
"space-before-function-paren": false,
"space-within-parens": false,
"strict-export-declare-modifiers": false,
"trim-file": false,
"triple-equals": false,
"typedef-whitespace": false,
"unified-signatures": false,
"void-return": false,
"whitespace": false
}
}
+8
View File
@@ -12,6 +12,14 @@
"typeRoots": [
"../"
],
"paths": {
"clean-css": [
"clean-css/v3"
],
"clean-css/*": [
"clean-css/v3/*"
]
},
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true
+8
View File
@@ -12,6 +12,14 @@
"typeRoots": [
"../"
],
"paths": {
"clean-css": [
"clean-css/v3"
],
"clean-css/*": [
"clean-css/v3/*"
]
},
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true
+8
View File
@@ -12,6 +12,14 @@
"typeRoots": [
"../"
],
"paths": {
"clean-css": [
"clean-css/v3"
],
"clean-css/*": [
"clean-css/v3/*"
]
},
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true
+8 -2
View File
@@ -16,11 +16,17 @@
"html-minifier": [
"html-minifier/v1"
],
"html-minifier/*": [
"html-minifier/v1/*"
],
"uglify-js": [
"uglify-js/v2"
],
"html-minifier/*": [
"html-minifier/v1/*"
"clean-css": [
"clean-css/v3"
],
"clean-css/*": [
"clean-css/v3/*"
]
},
"types": [],