1
const path = require('path')
2
const sass = require('sass')
3
const postcss = require('postcss')
4
const cssnano = require('cssnano')
5
const rtl = require('rtlcss')
6
const autoprefixer = require('autoprefixer')
8
const buildConf = require('./config')
9
const buildUtils = require('./utils')
11
const postCssCompiler = postcss([ autoprefixer ])
12
const postCssRtlCompiler = postcss([ rtl({}) ])
19
cssDeclarationSorter: false,
20
reduceTransforms: false
27
generate('src/index.sass', `dist/index`)
38
function resolve (_path) {
39
return path.resolve(__dirname, '..', _path)
42
function generate (src, dest) {
46
return new Promise((resolve, reject) => {
47
sass.render({ file: src, includePaths: ['node_modules'] }, (err, result) => {
56
.then(code => buildConf.banner + code)
57
.then(code => postCssCompiler.process(code, { from: void 0 }))
59
code.warnings().forEach(warn => {
60
console.warn(warn.toString())
64
.then(code => Promise.all([
65
generateUMD(dest, code),
66
postCssRtlCompiler.process(code, { from: void 0 })
67
.then(code => generateUMD(dest, code.css, '.rtl'))
71
function generateUMD (dest, code, ext = '') {
72
return buildUtils.writeFile(`${dest}${ext}.css`, code, true)
73
.then(code => nano.process(code, { from: void 0 }))
74
.then(code => buildUtils.writeFile(`${dest}${ext}.min.css`, code.css, true))