minify-css.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. const CleanCSS = require("clean-css")
  2. const fs = require("fs")
  3. const path = require("path")
  4. function minify(){
  5. let start = Date.now()
  6. console.log(`\x1b[33mMinifying...\x1b[0m`)
  7. const css = fs.readFileSync(path.join(__dirname, "./src/styles/index.css"), "utf-8")
  8. fs.writeFileSync(path.join(__dirname, "./dist/style.css"), css)
  9. const output = new CleanCSS({
  10. sourceMap: true
  11. }).minify(css)
  12. if(output.errors.length > 0){
  13. console.error("\x1b[31m"+output.errors.join("\n")+"\x1b[0m")
  14. }
  15. if(output.warnings.length > 0){
  16. console.warn("\x1b[33m"+output.warnings.join("\n")+"\x1b[0m")
  17. }
  18. fs.writeFileSync(path.join(__dirname, "./dist/style.min.css"), output.styles+"\n/*# sourceMappingURL=style.min.css.map */")
  19. fs.writeFileSync(path.join(__dirname, "./dist/style.min.css.map"), output.sourceMap.toString())
  20. console.log(`\x1b[32mMinified in ${(Date.now() - start)}ms. Minified by ${Math.floor(output.stats.efficiency*100)}%\x1b[0m`)
  21. }
  22. module.exports.minify = minify
  23. if(require.main === module){
  24. if(process.argv.includes("--watch")){
  25. console.log("\x1b[32mStarting watch mode.\x1b[0m")
  26. minify()
  27. console.log()
  28. fs.watchFile(path.join(__dirname, "./src/styles/index.css"), () => {
  29. minify()
  30. console.log()
  31. })
  32. }else{
  33. minify()
  34. }
  35. }