Build server prototype (integration with GitHub / NuGet / etc)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
micro-build-server/BuildServer/lib/tasks/cssnano.ts

37 lines
1.3 KiB

"use strict";
8 years ago
import { process as cssnanoProcess } from "cssnano";
import { readFile, writeFile } from "fs";
import { join } from "path";
import { GenericTask } from "../types";
export default ((params) => (processor) => () => {
const filePath = join(processor.context.exported, params.filename);
readFile(filePath, "utf8", (readErr, css) => {
if (readErr) {
processor.onError(`Unable to read stylesheet ${params.filename}: ${readErr}`);
return processor.done();
}
return cssnanoProcess(css)
.then((result) => {
writeFile(filePath, result.content, (writeErr) => {
if (writeErr) {
processor.onError(`Unable to write uglified stylesheet for ${params.filename}: ${writeErr}`);
} else {
processor.onInfo(`Saved uglified stylesheet for ${params.filename}; uglified length: ${result.content.length}`);
}
processor.done();
});
})
.catch((cssErr: string) => {
processor.onError(`Unable to uglify stylesheet: ${cssErr}`);
processor.done();
});
});
}) as GenericTask<{ readonly filename: string }>;