1
1
var fs = require ( 'fs' )
2
2
var _ = require ( 'lodash' )
3
3
var path = require ( 'path' )
4
+ var mkdirp = require ( 'mkdirp' )
4
5
var glob = require ( 'glob' )
5
6
var titleize = require ( 'titleize' )
6
7
var fm = require ( 'json-front-matter' )
@@ -14,6 +15,7 @@ var removeComments = require('postcss-discard-comments')
14
15
var cssVariables = require ( 'postcss-css-variables' )
15
16
var customMedia = require ( 'postcss-custom-media' )
16
17
var mqPacker = require ( 'css-mqpacker' )
18
+ var cssstats = require ( 'cssstats' )
17
19
18
20
var tachyonsCss = fs . readFileSync ( 'src/css/tachyons.css' , 'utf8' )
19
21
@@ -27,11 +29,13 @@ module.exports = function () {
27
29
var template = fs . readFileSync ( 'src/templates/components.html' , 'utf8' )
28
30
29
31
components . forEach ( function ( component ) {
30
- var newDir = rmHtmlExt ( component . replace ( 'src/' , 'examples/' ) ) + '/index.html'
32
+ var newDir = rmHtmlExt ( component . replace ( 'src/' , 'examples/' ) )
33
+ var newFile = newDir + '/index.html'
31
34
var componentHtml = fs . readFileSync ( component , 'utf8' )
32
35
33
36
var fmParsed = fm . parse ( componentHtml )
34
37
var frontMatter = fmParsed . attributes || { }
38
+ frontMatter . bodyClass = frontMatter . bodyClass || ''
35
39
frontMatter . title = frontMatter . title || getTitle ( component )
36
40
frontMatter . classes = getClasses ( fmParsed . body ) . map ( function ( klass ) {
37
41
return '.' + klass
@@ -55,13 +59,16 @@ module.exports = function () {
55
59
from : 'src/css/tachyons.css'
56
60
} ) . css
57
61
62
+ frontMatter . stats = cssstats ( frontMatter . componentCss )
63
+
58
64
// TODO: Update me once src/ uses the npm modules
59
65
frontMatter . modules = Object . keys ( moduleSrcs ) . map ( function ( module ) {
60
66
return 'tachyons-' + module . split ( '/_' ) [ 1 ] . replace ( '.css' , '' )
61
67
} )
62
68
63
69
var compiledPage = _ . template ( template ) ( frontMatter )
64
- fs . writeFileSync ( newDir , compiledPage )
70
+ mkdirp . sync ( newDir )
71
+ fs . writeFileSync ( newFile , compiledPage )
65
72
} )
66
73
} )
67
74
}
0 commit comments