mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-06-20 16:49:36 +02:00
#1328 - first pass
This commit is contained in:
58
minifier.js
Normal file
58
minifier.js
Normal file
@@ -0,0 +1,58 @@
|
||||
var uglifyjs = require('uglify-js'),
|
||||
less = require('less'),
|
||||
async = require('async'),
|
||||
fs = require('fs'),
|
||||
|
||||
Minifier = {
|
||||
js: {},
|
||||
css: {}
|
||||
};
|
||||
|
||||
/* Javascript */
|
||||
Minifier.js.minify = function (scripts, callback) {
|
||||
// winston.info('[meta/js] Minifying client-side libraries...');
|
||||
var minified = uglifyjs.minify(scripts);
|
||||
|
||||
callback(minified.code);
|
||||
|
||||
// winston.info('[meta/js] Done.');
|
||||
};
|
||||
|
||||
Minifier.js.concatenate = function(scripts, callback) {
|
||||
// winston.info('[meta/js] Concatenating client-side libraries into one file...');
|
||||
|
||||
async.map(scripts, function(path, next) {
|
||||
fs.readFile(path, { encoding: 'utf-8' }, next);
|
||||
}, function(err, contents) {
|
||||
if (err) {
|
||||
// winston.error('[meta/js] Could not minify javascript! Error: ' + err.message);
|
||||
console.log('ERROR');
|
||||
process.exit();
|
||||
}
|
||||
|
||||
callback(contents.reduce(function(output, src) {
|
||||
return output.length ? output + ';\n' + src : src;
|
||||
}, ''));
|
||||
|
||||
// winston.info('[meta/js] Done.');
|
||||
});
|
||||
};
|
||||
|
||||
process.on('message', function(payload) {
|
||||
var executeCallback = function(data) {
|
||||
process.send({
|
||||
action: payload.action,
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
switch(payload.action) {
|
||||
case 'js.minify':
|
||||
Minifier.js.minify(payload.scripts, executeCallback);
|
||||
break;
|
||||
|
||||
case 'js.concatenate':
|
||||
Minifier.js.concatenate(payload.scripts, executeCallback);
|
||||
break;
|
||||
}
|
||||
})
|
||||
29
src/meta.js
29
src/meta.js
@@ -292,35 +292,6 @@ var fs = require('fs'),
|
||||
Meta.js.prepared = true;
|
||||
callback();
|
||||
});
|
||||
},
|
||||
minify: function () {
|
||||
var uglifyjs = require('uglify-js'),
|
||||
minified;
|
||||
|
||||
winston.info('[meta/js] Minifying client-side libraries...');
|
||||
|
||||
minified = uglifyjs.minify(this.scripts);
|
||||
this.cache = minified.code;
|
||||
|
||||
winston.info('[meta/js] Done.');
|
||||
},
|
||||
concatenate: function() {
|
||||
winston.info('[meta/js] Concatenating client-side libraries into one file...');
|
||||
|
||||
async.map(this.scripts, function(path, next) {
|
||||
fs.readFile(path, { encoding: 'utf-8' }, next);
|
||||
}, function(err, contents) {
|
||||
if (err) {
|
||||
winston.error('[meta/js] Could not minify javascript! Error: ' + err.message);
|
||||
process.exit();
|
||||
}
|
||||
|
||||
Meta.js.cache = contents.reduce(function(output, src) {
|
||||
return output.length ? output + ';\n' + src : src;
|
||||
}, '');
|
||||
|
||||
winston.info('[meta/js] Done.');
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ var path = require('path'),
|
||||
server,
|
||||
winston = require('winston'),
|
||||
async = require('async'),
|
||||
fork = require('child_process').fork,
|
||||
|
||||
emailer = require('./emailer'),
|
||||
db = require('./database'),
|
||||
@@ -91,14 +92,25 @@ if(nconf.get('ssl')) {
|
||||
|
||||
plugins.ready(function() {
|
||||
// Prepare js for minification/concatenation
|
||||
meta.js.prepare(function() {
|
||||
if (app.enabled('minification')) {
|
||||
meta.js.minify();
|
||||
} else {
|
||||
meta.js.concatenate();
|
||||
var minifier = fork('minifier.js');
|
||||
|
||||
minifier.on('message', function(payload) {
|
||||
switch(payload.action) {
|
||||
case 'js.minify': // Intentional fall-through
|
||||
case 'js.concatenate':
|
||||
winston.info('[meta/js] Compilation complete');
|
||||
meta.js.cache = payload.data;
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
meta.js.prepare(function() {
|
||||
minifier.send({
|
||||
action: app.enabled('minification') ? 'js.minify' : 'js.concatenate',
|
||||
scripts: meta.js.scripts
|
||||
});
|
||||
});
|
||||
|
||||
// Minify CSS
|
||||
meta.css.minify();
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user