-
Notifications
You must be signed in to change notification settings - Fork 84
/
css.js
40 lines (29 loc) · 1 KB
/
css.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
var fs = require('fs-extra');
var DataURI = require('datauri');
var CleanCSS = require('clean-css');
var minimize = new CleanCSS();
var static_dir = __dirname + '/../static';
var css_dir = static_dir + '/css';
var images_dir = static_dir + '/images';
var finder = require('finder');
var config = require('config');
module.exports = function (req, res, next) {
var styles = fs.readdirSync(css_dir);
var images = fs.readdirSync(images_dir);
var css = '';
css = finder.css();
styles.forEach(function(name){
if (name.indexOf('.css') == -1) return;
css += '\n\n\n';
css += fs.readFileSync(css_dir + '/' + name, 'utf-8');
});
images.forEach(function(name){
if (css.indexOf(name) === -1) return;
var datauri = new DataURI(images_dir + '/' + name);
css = css.split('/images/' + name).join(datauri.content);
});
css = minimize.minify(css || '');
res.set('Content-Type', 'text/css');
if (config.cache) res.set('Cache-Control', 'max-age=31536000');
res.send(css);
};