cleancss.js 2.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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. // exporting for easier unit testing
  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. // 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. }
  55. exports.runCleanCss = runCleanCss;
  56. // export for testing only
  57. exports.taskInfo = {
  58. fullArg: '--cleancss',
  59. shortArg: '-e',
  60. envVar: 'IONIC_CLEANCSS',
  61. packageConfig: 'ionic_cleancss',
  62. defaultConfigFile: 'cleancss.config'
  63. };