cute
Version:
Minifier-friendly JavaScript built for speed and power.
103 lines (85 loc) • 2.79 kB
JavaScript
var fs = require('fs')
var figlet = require('figlet')
var pkg = require('./package')
var cwd = process.cwd()
var dir = 'scripts'
var name = pkg.name
var version = pkg.version
var lib = name + ' ' + version
var token = pkg.token || name.toUpperCase().replace('-', '_')
require('lighter-colors')
var check = ' ' + (/^win/.test(process.platform) ? '\u221A' : '\u2714').green + ' '
/**
* Assemble the /scripts directory of the current project, and save the
* concatenated result as a library that's ready for RequireJS, AMD or window.
*/
figlet.text(lib, {font: 'Small'}, function (ignore, art) {
console.log(art)
var repo = (pkg.repository || '').replace(/(\.git|\/)$/, '') + '/blob/master/'
var urls = []
var js = ''
var files = fs.readdirSync(dir)
files.forEach(function (name) {
var path = dir + '/' + name
urls.push(repo + path)
js += fs.readFileSync(path) + '\n'
})
var top = '/**' + art.replace(/ +$/, '').replace(/ *\n/g, '\n * ') + '\n' +
' *\n' +
' * Source:\n' +
' * ' + urls.join('\n * ') + '\n' +
' */\n\n' +
'var Cute = {}\n\n'
var concat = top + js
var common = top +
'// +env:any\n' +
'if (typeof exports === \'object\') {\n' +
' module.exports = Cute\n' +
'} else if (typeof define === \'function\' && define.amd) {\n' +
' define(function () {return Cute});\n' +
'} else {\n' +
' this.Cute = Cute\n' +
'}\n' +
'// -env:any\n\n' + js
var exp = /(\n?)(\s*)(Cute)\.([$_a-zA-Z0-9]+)(\s*=)?/g
write('.js', common)
console.log()
// var test = fs.readFileSync('uglify-test.js')
// var wrapped = ('(function(){' + (concat + test) + '})()')
// .replace(exp, function (all, br, indent, lib, key, eq) {
// var name = lib + '_' + key
// var word = br ? 'var ' : ''
// return br + indent + (eq ? word + name + ' =' : name)
// })
// var min = uglify(wrapped)
// fs.writeFileSync('uglify-test.min.js', min)
})
function write (extension, code) {
var kb = (code.length / 1024).toFixed(1)
console.log(check + name + extension + ' (' + kb + 'kb)')
fs.writeFileSync(name + extension, code)
}
var UglifyJS = require('uglify-js')
function uglify (js) {
js = js.replace(/\beval\b/g, '__EVIL__')
var minified = UglifyJS
.minify(js, {
fromString: true
})
.code
.replace(/\b__EVIL__\b/g, 'eval')
console.log(typeof minified)
return minified
}
/*
var fs = require('fs')
var js = fs.readFileSync('example.js').toString()
var libPattern = /(\n?)(\s*)(Cute)\.([$_a-zA-Z0-9]+)(\s*=)?/g
js = js
.replace(libPattern, function (match, br, indent, lib, key, equals) {
var name = lib + '_' + key
var word = br ? 'var ' : ''
return br + indent + (equals ? word + name + ' =' : name)
})
*/