UNPKG

2.66 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var path_1 = require("path");
4var errors_1 = require("./util/errors");
5var config_1 = require("./util/config");
6var logger_1 = require("./logger/logger");
7var helpers_1 = require("./util/helpers");
8var workerClient = require("./worker-client");
9var clean_css_factory_1 = require("./util/clean-css-factory");
10function cleancss(context, configFile) {
11 var logger = new logger_1.Logger('cleancss');
12 configFile = config_1.getUserConfigFile(context, exports.taskInfo, configFile);
13 return workerClient.runWorker('cleancss', 'cleancssWorker', context, configFile).then(function () {
14 logger.finish();
15 }).catch(function (err) {
16 throw logger.fail(err);
17 });
18}
19exports.cleancss = cleancss;
20function cleancssWorker(context, configFile) {
21 context = config_1.generateContext(context);
22 var config = config_1.fillConfigDefaults(configFile, exports.taskInfo.defaultConfigFile);
23 var srcFile = path_1.join(context.buildDir, config.sourceFileName);
24 var destFilePath = path_1.join(context.buildDir, config.destFileName);
25 logger_1.Logger.debug("[Clean CSS] cleancssWorker: reading source file " + srcFile);
26 return helpers_1.readFileAsync(srcFile).then(function (fileContent) {
27 return runCleanCss(config, fileContent);
28 }).then(function (minifiedContent) {
29 logger_1.Logger.debug("[Clean CSS] runCleanCss: writing file to disk " + destFilePath);
30 return helpers_1.writeFileAsync(destFilePath, minifiedContent);
31 });
32}
33exports.cleancssWorker = cleancssWorker;
34// exporting for easier unit testing
35function runCleanCss(cleanCssConfig, fileContent) {
36 return new Promise(function (resolve, reject) {
37 var minifier = clean_css_factory_1.getCleanCssInstance(cleanCssConfig.options);
38 minifier.minify(fileContent, function (err, minified) {
39 if (err) {
40 reject(new errors_1.BuildError(err));
41 }
42 else if (minified.errors && minified.errors.length > 0) {
43 // just return the first error for now I guess
44 minified.errors.forEach(function (e) {
45 logger_1.Logger.error(e);
46 });
47 reject(new errors_1.BuildError(minified.errors[0]));
48 }
49 else {
50 resolve(minified.styles);
51 }
52 });
53 });
54}
55exports.runCleanCss = runCleanCss;
56// export for testing only
57exports.taskInfo = {
58 fullArg: '--cleancss',
59 shortArg: '-e',
60 envVar: 'IONIC_CLEANCSS',
61 packageConfig: 'ionic_cleancss',
62 defaultConfigFile: 'cleancss.config'
63};