quasar

Форк
0
75 строк · 1.7 Кб
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')
7

8
const buildConf = require('./config')
9
const buildUtils = require('./utils')
10

11
const postCssCompiler = postcss([ autoprefixer ])
12
const postCssRtlCompiler = postcss([ rtl({}) ])
13

14
const nano = postcss([
15
  cssnano({
16
    preset: ['default', {
17
      mergeLonghand: false,
18
      convertValues: false,
19
      cssDeclarationSorter: false,
20
      reduceTransforms: false
21
    }]
22
  })
23
])
24

25
Promise
26
  .all([
27
    generate('src/index.sass', `dist/index`)
28
  ])
29
  .catch(e => {
30
    console.error(e)
31
    process.exit(1)
32
  })
33

34
/**
35
 * Helpers
36
 */
37

38
function resolve (_path) {
39
  return path.resolve(__dirname, '..', _path)
40
}
41

42
function generate (src, dest) {
43
  src = resolve(src)
44
  dest = resolve(dest)
45

46
  return new Promise((resolve, reject) => {
47
    sass.render({ file: src, includePaths: ['node_modules'] }, (err, result) => {
48
      if (err) {
49
        reject(err)
50
        return
51
      }
52

53
      resolve(result.css)
54
    })
55
  })
56
  .then(code => buildConf.banner + code)
57
  .then(code => postCssCompiler.process(code, { from: void 0 }))
58
  .then(code => {
59
    code.warnings().forEach(warn => {
60
      console.warn(warn.toString())
61
    })
62
    return code.css
63
  })
64
  .then(code => Promise.all([
65
    generateUMD(dest, code),
66
    postCssRtlCompiler.process(code, { from: void 0 })
67
      .then(code => generateUMD(dest, code.css, '.rtl'))
68
  ]))
69
}
70

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))
75
}
76

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.