-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathspecial.js
More file actions
executable file
·78 lines (63 loc) · 1.94 KB
/
Copy pathspecial.js
File metadata and controls
executable file
·78 lines (63 loc) · 1.94 KB
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#!/usr/bin/env node
var argv = require('yargs').argv;
var fs = require('fs');
var glob = require('glob');
var path = require('path');
var purify = require('purify-css');
var sys = require('sys')
var exec = require('child_process').exec;
var args = argv._;
function puts(error, stdout, stderr) {
sys.puts(stdout);
}
function purifyFile(packageName, options) {
var filePaths = glob.sync('**/node_modules/' + packageName + '/**/*.css')
.filter(function (filePath) {
// Ignore minified files.
return filePath.indexOf('.min') === -1;
});
console.log('Installed:', options.whitelist, 'from', packageName);
return purify('', filePaths, options);
}
function installPackage(packageName, cb) {
exec('npm install ' + packageName, cb);
}
if (args[0] === 'install') {
if (args[1]) {
var packageName = args[1];
var selectedSelectors = args.slice(2);
installPackage(packageName, function (error, stdout, stderr) {
puts(error, stdout, stderr);
if (!error) {
purifyFile(packageName, {
output: './special.css',
whitelist: selectedSelectors
});
}
});
} else {
if (fs.existsSync('./special.config.js')) {
var config = require('./special.config.js');
var packages = config.packages;
var purified = '';
var finishCount = 0;
var packagesCount = Object.keys(packages).length;
var tasks = Object.keys(packages).forEach(function (packageName) {
var purifyOptions = {
whitelist: packages[packageName].selectors
};
installPackage(packageName, function () {
purified = purified + '\n\n/* break */\n\n' + purifyFile(packageName, purifyOptions);
finishCount++;
if (finishCount === packagesCount) {
fs.writeFile('./special.css', purified, function (err) {
if (err) {
return err;
}
});
}
});
});
}
}
}