text: var sass = require('node-sass')
  var postcss = require('postcss')
  var autoprefixer = require('autoprefixer')
  var cssnano = require('cssnano')
  var chalk = require('chalk')
  var fs = require('fs')
  var path = require('path')
  var mkdirp = require('mkdirp')
  
  mkdirp.sync('./dist/')
  
  function handleErr (err) {
    console.error(chalk.red('✗ Error:'), chalk.red(err.message))
  }
  
  function minifyCSS () {
    return new Promise(function (resolve) {
      fs.readFile('./dist/uppy.css', function (err, css) {
        if (err) handleErr(err)
        postcss([ cssnano ])
          .process(css, { from: path.join(__dirname, '../dist/uppy.css') })
          .then(function (postCSSResult) {
            postCSSResult.warnings().forEach(function (warn) {
              console.warn(warn.toString())
            })
            fs.writeFile('./dist/uppy.min.css', postCSSResult.css, function (err) {
              if (err) handleErr(err)
              console.info(chalk.green('✓ Minified Bundle CSS:'), chalk.magenta('uppy.min.css'))
              resolve()
            })
          })
      })
    })
  }
  
  function compileCSS () {
    return new Promise(function (resolve) {
      sass.render({file: './src/scss/uppy.scss'}, function (err, sassResult) {
        if (err) handleErr(err)
        postcss([ autoprefixer ])
          .process(sassResult.css, { from: path.join(__dirname, '../src/scss/uppy.scss') })
          .then(function (postCSSResult) {
            postCSSResult.warnings().forEach(function (warn) {
              console.warn(warn.toString())
            })
            fs.writeFile('./dist/uppy.css', postCSSResult.css, function (err) {
              if (err) handleErr(err)
              console.info(chalk.green('✓ Built Uppy CSS:'), chalk.magenta('uppy.css'))
              resolve()
            })
          })
      })
    })
  }
  
  compileCSS()
    .then(minifyCSS)
    .then(function () {
      console.info(chalk.yellow('✓ CSS Bundle 🎉'))
    })
  