-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcli.js
56 lines (42 loc) · 1.27 KB
/
cli.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/usr/bin/env node
'use strict';
process.title = 'flecks';
// node cli.js --cols 12 --breaks sm:375 md:768 lg:1024 xl:1280 xxl:1920 --gaps 8 16 24 32 48 --out ./dist/flecks.css
const { generate } = require('./src/flecks');
const fs = require('fs');
const cssobj_core = require('cssobj-core');
const genCss = require('cssobj-plugin-gencss');
const defaultUnit = require('cssobj-plugin-default-unit');
const argv = require('yargs-parser')(process.argv.slice(2), {array: ['breaks','gaps'], boolean: ['noparent']});
if (argv.breaks) {
let o = {};
argv.breaks.forEach(b => {
let [bp, px] = b.split(':');
o[bp] = +px;
});
argv.breaks = o;
}
if (!argv.out)
argv.out = './dist/flecks.css'
const cssobj = cssobj_core({
plugins: [
defaultUnit('px'),
genCss({indent: ' ', newLine: '\n'}),
]
});
let cssStruct = generate({
cols: argv.cols,
breaks: argv.breaks,
gaps: argv.gaps,
parent: !argv.noparent,
});
let css = cssobj(cssStruct).css.replace(/\s\s+\{/gm, '{');
fs.writeFileSync(argv.out, css, 'utf8');
let cssMin = css
.replace(/\s+/gm,' ')
.replace(/ ?\; ?/g, ";")
.replace(/ ?\{ ?/g, "{")
.replace(/ ?;?\} ?/g, "}")
.replace(/ ?\: ?/g, ':')
.replace(/ ?\> ?/g, '>'); // todo: all combinators
fs.writeFileSync(argv.out.replace('.css', '.min.css'), cssMin, 'utf8');