compile.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. const util = require('util');
  2. const fs = require('fs');
  3. const exec = util.promisify(require('child_process').exec);
  4. const sFiles = process.argv[2],
  5. sCommand = process.argv[3];
  6. if (!sFiles)
  7. return;
  8. async function runCommand(command) {
  9. console.log(command);
  10. const { stdout, stderr, error } = await exec(command);
  11. if(stderr){
  12. console.error('stderr:', stderr);
  13. }
  14. if(error){
  15. console.error('error:', error);
  16. }
  17. return stdout;
  18. }
  19. function processFile(file){
  20. if (sCommand === 'remove')
  21. return fs.unlink('../' + file, function(err){
  22. if (err)
  23. console.log(file + ' doesn\'t exists');
  24. else
  25. console.log(file + ' was removed');
  26. });
  27. else
  28. {
  29. if (file === 'tailwind-messenger.css')
  30. return runCommand(`npm run tailwind`);
  31. else
  32. return runCommand(`npx tailwindcss -i ./components/${file} -o ../${file} ${sCommand ? '--' + sCommand.toLowerCase() : ''}`);
  33. }
  34. }
  35. function* generator(files) {
  36. yield files.forEach((file) => processFile(file));
  37. }
  38. try {
  39. if (fs.lstatSync(sFiles).isDirectory())
  40. fs.readdir(sFiles, (err, files) => {
  41. const main = generator(files);
  42. while (!main.next().done) ;
  43. });
  44. }
  45. catch(e)
  46. {
  47. if(e.code === 'ENOENT'){
  48. if (fs.lstatSync('./components/' + sFiles).isFile())
  49. processFile(sFiles);
  50. }else {
  51. console.log(e.toString());
  52. }
  53. }