mirror of
https://github.com/chenasraf/DefinitelyTyped.git
synced 2026-05-18 01:49:01 +00:00
* [clean-css] Makes `Output.sourceMap` optional as it is only included in the result of a call to `new CleanCSS(options).minify` if `options.sourceMap` was `true`. Updates an unguarded access in the associated test file accordingly. * [clean-css] Updates URL references to the CleanCSS repository to the current URL (the repository got transferred at one point).
117 lines
3.8 KiB
TypeScript
117 lines
3.8 KiB
TypeScript
// Original by Tanguy Krotoff <https://github.com/tkrotoff>
|
|
// Updated by Andrew Potter <https://github.com/GolaWaya>
|
|
|
|
import * as CleanCSS from 'clean-css';
|
|
|
|
let source = 'a{font-weight:bold;}';
|
|
console.log(new CleanCSS().minify(source).styles);
|
|
|
|
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, 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/clean-css/clean-css-cli/blob/8fc585e99d7bf4e812a5d4444ccbaf9967f24f10/index.js#L372-L374 on how it's used in clean-css' CLI
|
|
console.log(minified.sourceMap);
|
|
minified.sourceMap?.setSourceContent("bar.css", "");
|
|
});
|
|
|
|
const inputSourceMap = { version: '3', sources: ['foo.css'], names: [], mappings: 'AAAA' };
|
|
new CleanCSS({ sourceMap: true, rebaseTo: pathToOutputDirectory })
|
|
.minify(source, inputSourceMap, (error: any, minified: CleanCSS.Output): void => {
|
|
// access minified.sourceMap as above
|
|
console.log(minified.sourceMap);
|
|
});
|
|
|
|
const inputSourceMapAsString = JSON.stringify(inputSourceMap);
|
|
new CleanCSS({ sourceMap: true, rebaseTo: pathToOutputDirectory })
|
|
.minify(source, inputSourceMapAsString, (error: any, minified: CleanCSS.Output): void => {
|
|
// access minified.sourceMap as above
|
|
console.log(minified.sourceMap);
|
|
});
|
|
|
|
new CleanCSS({ sourceMap: true, rebaseTo: pathToOutputDirectory }).minify({
|
|
'path/to/source/1': {
|
|
styles: source,
|
|
sourceMap: inputSourceMap
|
|
},
|
|
'path/to/source/2': {
|
|
styles: source,
|
|
sourceMap: inputSourceMapAsString
|
|
}
|
|
}, (error: any, minified: CleanCSS.Output): void => {
|
|
// 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'
|
|
}
|
|
});
|
|
|
|
// 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);
|
|
}
|
|
);
|
|
|
|
// test object return when passing options as object
|
|
let CleanCssOptions: CleanCSS.Options = { returnPromise: true };
|
|
new CleanCSS(CleanCssOptions).minify(source)
|
|
.then((minified: CleanCSS.Output): void => {
|
|
console.log(minified.styles);
|
|
}).catch((error: any): void => {
|
|
console.log(error);
|
|
}
|
|
);
|
|
|
|
CleanCssOptions = { returnPromise: false };
|
|
new CleanCSS(CleanCssOptions).minify(source, (error: any, minified: CleanCSS.Output): void => {
|
|
console.log(minified.styles);
|
|
});
|
|
|
|
// test clean-css semicolonAfterLastProperty option works as expected
|
|
source = 'a{font-weight:bold;}';
|
|
CleanCssOptions = {
|
|
format: {
|
|
semicolonAfterLastProperty: true
|
|
}
|
|
};
|
|
|
|
new CleanCSS(CleanCssOptions).minify(source, (error: any, minified: CleanCSS.Output): void => {
|
|
console.log(minified.styles);
|
|
});
|