1 | var purify = require('purify-css')
|
2 | var Clean = require('clean-css')
|
3 | var assert = require('assert')
|
4 |
|
5 | var clean = new Clean(createCleanCssOptions())
|
6 |
|
7 | module.exports = node
|
8 |
|
9 | function node (state, createEdge) {
|
10 | assert.equal(typeof state.metadata.entry, 'string', 'state.metadata.entries should be type string')
|
11 |
|
12 | assert.ok(state.scripts.bundle, 'bankai/node-style: state.script.bundle exists')
|
13 | assert.ok(state.scripts.style, 'bankai/node-style: state.script.style exists')
|
14 |
|
15 | var script = String(state.scripts.bundle.buffer)
|
16 | var style = String(state.scripts.style.buffer)
|
17 | var bundle
|
18 |
|
19 | try {
|
20 | bundle = purify(script, style)
|
21 | } catch (e) {
|
22 | this.emit('error', 'styles', 'purify-css', e)
|
23 | }
|
24 |
|
25 | if (!state.metadata.watch) {
|
26 | try {
|
27 | bundle = clean.minify(bundle).styles
|
28 | } catch (e) {
|
29 | this.emit('error', 'styles', 'clean-css', e)
|
30 | }
|
31 | }
|
32 |
|
33 | createEdge('bundle', Buffer.from(bundle), {
|
34 | mime: 'text/css'
|
35 | })
|
36 | }
|
37 |
|
38 | function createCleanCssOptions () {
|
39 | return {
|
40 | level: {
|
41 | 1: {
|
42 | specialComments: 0
|
43 | }
|
44 | }
|
45 | }
|
46 | }
|