kopia lustrzana https://github.com/c9/core
82 wiersze
2.5 KiB
JavaScript
82 wiersze
2.5 KiB
JavaScript
var fs = require('fs');
|
|
|
|
function sanitize(code){
|
|
return code.replace(/require\(.+\/?isbinaryfile[\"\']\)/g, "isbinaryfile")
|
|
.replace("module.exports = function(bytes, size) {", "isbinaryfile = function(bytes, size) {")
|
|
|
|
.replace(/require\(.+\/?minimatch[\"\']\)/g, "minimatch")
|
|
.replace(/require\(.+\/?ignorer[\"\']\)/g, "Ignorer")
|
|
.replace(/require\(.+\/?mergesort[\"\']\)/g, "mergesort")
|
|
.replace(/require\(.+\/?options[\"\']\)/g, "parser")
|
|
.replace(/require\(.+\/?walkdir[\"\']\)/g, "walker")
|
|
.replace(/require\(.+\/?finalizer[\"\']\)/g, "Finalizer")
|
|
|
|
.replace("#!/usr/bin/env node", "");
|
|
}
|
|
|
|
function concat(opts) {
|
|
var fileList = opts.src;
|
|
var destPath = opts.dest;
|
|
var vfsDestPath = opts.vfsDest;
|
|
|
|
var src = fileList.map(function(filePath){
|
|
return fs.readFileSync(filePath, "utf-8");
|
|
});
|
|
|
|
src = src.join("\n");
|
|
|
|
// resolve requires inline
|
|
src = "var isbinaryfile, lrucache;\n" + sanitize(src);
|
|
|
|
fs.writeFileSync(destPath, src, "utf-8");
|
|
|
|
// do some magic to turn this into a vfs extension
|
|
var vfsPrefix = "module.exports = function (vfs, register) { \n" +
|
|
"\tregister(null, { \n" +
|
|
"\texecute: function (passedArgs, callback) { \n";
|
|
|
|
var vfsSuffix = "\t}\n" +
|
|
" \t}); \n" +
|
|
"};";
|
|
|
|
var vfsSrc = vfsPrefix
|
|
+ src.replace("parser.parseArgs()", "parser.parseArgs(passedArgs)")
|
|
+ vfsSuffix;
|
|
|
|
fs.writeFileSync(vfsDestPath, vfsSrc, "utf-8");
|
|
|
|
return { src: src, vfsSrc: vfsSrc };
|
|
}
|
|
|
|
function uglify(src, destPath) {
|
|
var uglify = require("uglify-js");
|
|
|
|
fs.writeFileSync(destPath, uglify.minify(src, {fromString: true}).code, "utf-8");
|
|
console.log(destPath +' built.');
|
|
}
|
|
|
|
|
|
try {
|
|
fs.mkdirSync("build");
|
|
}
|
|
catch (e) { }
|
|
|
|
var concatedFiles = concat({
|
|
src : ["node_modules/isbinaryfile/index.js",
|
|
"node_modules/sigmund/sigmund.js",
|
|
"node_modules/minimatch/minimatch.js",
|
|
"node_modules/lru-cache/lib/lru-cache.js",
|
|
"lib/mergesort.js",
|
|
"lib/ignorer.js",
|
|
"lib/options.js",
|
|
"lib/finalizer.js",
|
|
"lib/walkdir.js",
|
|
"bin/nak"],
|
|
dest : 'build/nak.concat.js',
|
|
vfsDest : 'build/nak.vfs.concat.js'
|
|
});
|
|
|
|
uglify(concatedFiles.src, 'build/nak.min.js');
|
|
uglify(concatedFiles.vfsSrc, 'build/nak.vfs.min.js');
|
|
|
|
console.log("and we're done"); |