mirror of https://github.com/ColorlibHQ/gentelella
87 lines
1.8 KiB
JavaScript
87 lines
1.8 KiB
JavaScript
var pkg = require('./package.json');
|
|
var fs = require('fs');
|
|
var ugly = require('uglify-js');
|
|
var jshint = require('jshint').JSHINT;
|
|
var babel = require('babel');
|
|
var gaze = require('gaze');
|
|
|
|
function writeBower() {
|
|
var bower = {
|
|
name: pkg.config.bower.name,
|
|
description: pkg.description,
|
|
dependencies: pkg.dependencies,
|
|
keywords: pkg.keywords,
|
|
authors: [pkg.author],
|
|
license: pkg.license,
|
|
homepage: pkg.homepage,
|
|
ignore: pkg.config.bower.ignore,
|
|
repository: pkg.repository,
|
|
main: pkg.main,
|
|
moduleType: pkg.config.bower.moduleType,
|
|
};
|
|
fs.writeFile('bower.json', JSON.stringify(bower, null, '\t'));
|
|
return true;
|
|
}
|
|
|
|
function lint(full) {
|
|
jshint(full.toString(), {
|
|
browser: true,
|
|
undef: true,
|
|
unused: true,
|
|
immed: true,
|
|
eqeqeq: true,
|
|
eqnull: true,
|
|
noarg: true,
|
|
predef: ['define', 'module', 'exports', 'Set']
|
|
});
|
|
|
|
if (jshint.errors.length) {
|
|
jshint.errors.forEach(function (err) {
|
|
console.log(err.line+':'+err.character+' '+err.reason);
|
|
});
|
|
} else {
|
|
console.log('linted')
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
function build(code) {
|
|
var minified = ugly.minify(code, {fromString: true}).code;
|
|
var header = [
|
|
'/*!',
|
|
' '+pkg.config.title+' '+pkg.version,
|
|
' license: MIT',
|
|
' '+pkg.homepage,
|
|
'*/',
|
|
''
|
|
].join('\n');
|
|
|
|
fs.writeFile('dist/'+pkg.config.filename+'.js', header+code);
|
|
fs.writeFile('dist/'+pkg.config.filename+'.min.js', header+minified);
|
|
writeBower();
|
|
|
|
console.log('dist built');
|
|
}
|
|
|
|
function transform(filepath) {
|
|
babel.transformFile(filepath, {modules: 'umd'}, function (err,res) {
|
|
if (err) {
|
|
return console.log(err);
|
|
} else {
|
|
lint(res.code);
|
|
build(res.code);
|
|
}
|
|
});
|
|
}
|
|
|
|
gaze('src/'+pkg.config.filename+'.js', function(err, watcher){
|
|
// On file changed
|
|
this.on('changed', function(filepath) {
|
|
transform(filepath);
|
|
});
|
|
|
|
console.log('watching');
|
|
});
|
|
|
|
transform('src/'+pkg.config.filename+'.js'); |