暫無描述

juice 1.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #!/usr/bin/env node
  2. var juice = require('..');
  3. var cli = require('../lib/cli');
  4. var fs = require('fs');
  5. var path = require('path');
  6. var program = cli.getProgram();
  7. if (program.args.length < 2) {
  8. program.help();
  9. }
  10. var [inputFile, outputFile] = program.args;
  11. var options = cli.argsToOptions(program);
  12. var queue = [];
  13. if (options.optionsFile) {
  14. var optionsFromFile = require(path.resolve(process.cwd(),options.optionsFile));
  15. options = Object.assign({}, optionsFromFile, options, {
  16. webResources: Object.assign(
  17. {},
  18. optionsFromFile && optionsFromFile.webResources,
  19. options && options.webResources
  20. )
  21. });
  22. }
  23. if (options.cssFile) {
  24. queue.push(function() {
  25. fs.readFile(options.cssFile, function(err, css) {
  26. if (handleError(err)) { return; }
  27. options.extraCss = css.toString();
  28. next();
  29. });
  30. });
  31. }
  32. next();
  33. function doJuice() {
  34. delete options.cssFile;
  35. delete options.optionsFile;
  36. juice.juiceFile(inputFile, options, function(err, html) {
  37. if (handleError(err)) { return; }
  38. fs.writeFile(outputFile, html, handleError);
  39. });
  40. }
  41. function next() {
  42. if (queue.length) {
  43. return queue.pop()();
  44. }
  45. doJuice();
  46. }
  47. function handleError(err) {
  48. if (err) {
  49. console.error(err.stack);
  50. process.exit(1);
  51. }
  52. return !!err;
  53. }