1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | var path_1 = require("path");
|
4 | var errors_1 = require("./util/errors");
|
5 | var config_1 = require("./util/config");
|
6 | var logger_1 = require("./logger/logger");
|
7 | var helpers_1 = require("./util/helpers");
|
8 | var workerClient = require("./worker-client");
|
9 | var clean_css_factory_1 = require("./util/clean-css-factory");
|
10 | function 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 | }
|
19 | exports.cleancss = cleancss;
|
20 | function 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 | }
|
33 | exports.cleancssWorker = cleancssWorker;
|
34 |
|
35 | function 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 |
|
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 | }
|
55 | exports.runCleanCss = runCleanCss;
|
56 |
|
57 | exports.taskInfo = {
|
58 | fullArg: '--cleancss',
|
59 | shortArg: '-e',
|
60 | envVar: 'IONIC_CLEANCSS',
|
61 | packageConfig: 'ionic_cleancss',
|
62 | defaultConfigFile: 'cleancss.config'
|
63 | };
|