zip.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #!/usr/bin/env node
  2. 'use strict';
  3. const fs = require('fs');
  4. const archiver = require('archiver');
  5. function createZip() {
  6. const fileName = 'stylus.zip';
  7. const ignore = [
  8. '.*', // dot files/folders (glob, not regexp)
  9. 'node_modules/**',
  10. 'tools/**',
  11. 'package.json',
  12. 'package-lock.json',
  13. 'yarn.lock',
  14. '*.zip',
  15. '*.map',
  16. ];
  17. const file = fs.createWriteStream(fileName);
  18. const archive = archiver('zip');
  19. return new Promise((resolve, reject) => {
  20. archive.on('finish', () => {
  21. resolve();
  22. });
  23. archive.on('warning', err => {
  24. if (err.code === 'ENOENT') {
  25. console.log('\x1b[33m%s\x1b[0m', 'Warning', err.message);
  26. } else {
  27. reject();
  28. throw err;
  29. }
  30. });
  31. archive.on('error', err => {
  32. reject();
  33. throw err;
  34. });
  35. archive.pipe(file);
  36. archive.glob('**', {ignore});
  37. archive.finalize();
  38. });
  39. }
  40. (async () => {
  41. try {
  42. await createZip();
  43. console.log('\x1b[32m%s\x1b[0m', 'Stylus zip complete');
  44. } catch (err) {
  45. console.error(err);
  46. process.exit(1);
  47. }
  48. })();