37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
|
/*---------------------------------------------------------------------------------------------
|
||
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||
|
*--------------------------------------------------------------------------------------------*/
|
||
|
import * as postcss from 'postcss';
|
||
|
import * as File from 'vinyl';
|
||
|
import * as es from 'event-stream';
|
||
|
|
||
|
export function gulpPostcss(plugins: postcss.AcceptedPlugin[], handleError?: (err: Error) => void) {
|
||
|
const instance = postcss(plugins);
|
||
|
|
||
|
return es.map((file: File, callback: (error?: any, file?: any) => void) => {
|
||
|
if (file.isNull()) {
|
||
|
return callback(null, file);
|
||
|
}
|
||
|
|
||
|
if (file.isStream()) {
|
||
|
return callback(new Error('Streaming not supported'));
|
||
|
}
|
||
|
|
||
|
instance
|
||
|
.process(file.contents.toString(), { from: file.path })
|
||
|
.then((result) => {
|
||
|
file.contents = Buffer.from(result.css);
|
||
|
callback(null, file);
|
||
|
})
|
||
|
.catch((error) => {
|
||
|
if (handleError) {
|
||
|
handleError(error);
|
||
|
callback();
|
||
|
} else {
|
||
|
callback(error);
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
}
|