Skip to content

Commit 4b5be84

Browse files
committed
Ensure that component docs generation is more robust
The components build no longer fails when there's a multiple/directory/path that doesn't yet exist. Also, CSS stats are now passed to the component template.
1 parent ffa734c commit 4b5be84

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

package.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,13 @@
2525
"cssnano": "^3.3.1",
2626
"cssstats": "^2.0.1",
2727
"filesize": "^3.1.3",
28-
"get-classes-from-html": "^0.1.0",
28+
"get-classes-from-html": "^1.0.1",
2929
"glob": "^5.0.15",
3030
"gzip-size": "^3.0.0",
3131
"immutable-css": "^0.1.0",
3232
"json-front-matter": "^1.0.0",
3333
"lodash": "^3.10.0",
34+
"mkdirp": "^0.5.1",
3435
"node-minify": "^1.2.0",
3536
"normalize": "^0.3.1",
3637
"perfectionist": "^2.1.2",
@@ -43,7 +44,7 @@
4344
"postcss-custom-properties": "^5.0.0",
4445
"postcss-discard-comments": "^2.0.1",
4546
"postcss-import": "^7.0.0",
46-
"postcss-select": "^0.1.0",
47+
"postcss-select": "^1.0.0",
4748
"remove-html-extension": "0.0.1",
4849
"s3": "^4.4.0",
4950
"tachyons": "^3.0.1",

src/components-build.js

+9-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
var fs = require('fs')
22
var _ = require('lodash')
33
var path = require('path')
4+
var mkdirp = require('mkdirp')
45
var glob = require('glob')
56
var titleize = require('titleize')
67
var fm = require('json-front-matter')
@@ -14,6 +15,7 @@ var removeComments = require('postcss-discard-comments')
1415
var cssVariables = require('postcss-css-variables')
1516
var customMedia = require('postcss-custom-media')
1617
var mqPacker = require('css-mqpacker')
18+
var cssstats = require('cssstats')
1719

1820
var tachyonsCss = fs.readFileSync('src/css/tachyons.css', 'utf8')
1921

@@ -27,11 +29,13 @@ module.exports = function () {
2729
var template = fs.readFileSync('src/templates/components.html', 'utf8')
2830

2931
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'
3134
var componentHtml = fs.readFileSync(component, 'utf8')
3235

3336
var fmParsed = fm.parse(componentHtml)
3437
var frontMatter = fmParsed.attributes || {}
38+
frontMatter.bodyClass = frontMatter.bodyClass || ''
3539
frontMatter.title = frontMatter.title || getTitle(component)
3640
frontMatter.classes = getClasses(fmParsed.body).map(function(klass) {
3741
return '.' + klass
@@ -55,13 +59,16 @@ module.exports = function () {
5559
from: 'src/css/tachyons.css'
5660
}).css
5761

62+
frontMatter.stats = cssstats(frontMatter.componentCss)
63+
5864
// TODO: Update me once src/ uses the npm modules
5965
frontMatter.modules = Object.keys(moduleSrcs).map(function (module) {
6066
return 'tachyons-' + module.split('/_')[1].replace('.css', '')
6167
})
6268

6369
var compiledPage = _.template(template)(frontMatter)
64-
fs.writeFileSync(newDir, compiledPage)
70+
mkdirp.sync(newDir)
71+
fs.writeFileSync(newFile, compiledPage)
6572
})
6673
})
6774
}

0 commit comments

Comments
 (0)