presentations/highlight-js/tools/cdn.js

88 lines
2.6 KiB
JavaScript

'use strict';
let path = require('path');
let browserBuild = require('./browser');
let registry = require('./tasks');
let utility = require('./utility');
let directory;
function moveLanguages() {
let input = path.join(directory.root, 'src', 'languages', '*.js'),
output = path.join(directory.build, 'languages'),
regex = utility.regex,
replace = utility.replace,
replaceArgs = replace(regex.header, ''),
template = 'hljs.registerLanguage(\'<%= name %>\','+
' <%= content %>);\n';
return {
startLog: { task: ['log', 'Building language files.'] },
read: {
requires: 'startLog',
task: ['glob', utility.glob(input)]
},
replace: { requires: 'read', task: ['replace', replaceArgs] },
template: { requires: 'replace', task: ['template', template] },
replace2: {
requires: 'template',
task: [ 'replaceSkippingStrings'
, replace(regex.replaces, utility.replaceClassNames)
]
},
replace3: {
requires: 'replace2',
task: ['replace', replace(regex.classname, '$1.className')]
},
compressLog: {
requires: 'replace3',
task: ['log', 'Compressing languages files.']
},
minify: { requires: 'compressLog', task: 'jsminify' },
rename: { requires: 'minify', task: ['rename', { extname: '.min.js' }] },
writeLog: {
requires: 'rename',
task: ['log', 'Writing language files.']
},
write: { requires: 'writeLog', task: ['dest', output] }
};
}
function moveStyles() {
const css = path.join(directory.root, 'src', 'styles', '*.css'),
images = path.join(directory.root, 'src', 'styles', '*.{jpg,png}'),
output = path.join(directory.build, 'styles'),
options = { dir: output, encoding: 'binary' };
return {
startLog: { task: ['log', 'Building style files.'] },
readCSS: { requires: 'startLog', task: ['glob', utility.glob(css)] },
readImages: {
requires: 'startLog',
task: ['glob', utility.glob(images, 'binary')]
},
compressLog: {
requires: 'readCSS',
task: ['log', 'Compressing style files.']
},
minify: { requires: 'compressLog', task: 'cssminify' },
rename: {
requires: 'minify',
task: ['rename', { extname: '.min.css' }]
},
writeLog: {
requires: ['rename', 'readImages'],
task: ['log', 'Writing style files.']
},
write: { requires: 'writeLog', task: ['dest', options] }
};
}
module.exports = function(commander, dir) {
directory = dir;
return utility.toQueue([moveLanguages(), moveStyles()], registry)
.concat(browserBuild(commander, dir));
};