wildfire chat server source initial submit
This commit is contained in:
Executable
+92
@@ -0,0 +1,92 @@
|
||||
"use strict";
|
||||
module.exports = bundle;
|
||||
|
||||
var fs = require("fs"),
|
||||
path = require("path");
|
||||
|
||||
var browserify = require("browserify");
|
||||
|
||||
var header = require("gulp-header");
|
||||
var gulpif = require("gulp-if");
|
||||
var sourcemaps = require("gulp-sourcemaps");
|
||||
var uglify = require("gulp-uglify");
|
||||
|
||||
var buffer = require("vinyl-buffer");
|
||||
var vinylfs = require("vinyl-fs");
|
||||
var source = require("vinyl-source-stream");
|
||||
|
||||
var pkg = require(path.join(__dirname, "..", "package.json"));
|
||||
|
||||
/*eslint-disable no-template-curly-in-string*/
|
||||
var license = [
|
||||
"/*!",
|
||||
" * protobuf.js v${version} (c) 2016, daniel wirtz",
|
||||
" * compiled ${date}",
|
||||
" * licensed under the bsd-3-clause license",
|
||||
" * see: https://github.com/dcodeio/protobuf.js for details",
|
||||
" */"
|
||||
].join("\n") + "\n";
|
||||
/*eslint-enable no-template-curly-in-string*/
|
||||
|
||||
var prelude = fs.readFileSync(require.resolve("../lib/prelude.js")).toString("utf8");
|
||||
|
||||
/**
|
||||
* Bundles the library.
|
||||
* @param {Object} options Bundler options
|
||||
* @param {string} options.entry Entry file
|
||||
* @param {string} options.target Target directory
|
||||
* @param {boolean} [options.compress=false] Whether to minify or not
|
||||
* @param {string[]} [options.exclude] Excluded source files
|
||||
* @returns {undefined}
|
||||
*/
|
||||
function bundle(options) {
|
||||
if (!options || !options.entry || !options.target)
|
||||
throw TypeError("missing options");
|
||||
var bundler = browserify({
|
||||
entries: options.entry,
|
||||
insertGlobalVars: false,
|
||||
detectGlobals: false,
|
||||
debug: true,
|
||||
prelude: prelude,
|
||||
preludePath: "./lib/prelude.js"
|
||||
})
|
||||
.external("long");
|
||||
if (options.exclude)
|
||||
options.exclude.forEach(bundler.exclude, bundler);
|
||||
return bundler
|
||||
.plugin(require("browserify-wrap"), {
|
||||
// undefined var and global strict-mode for uglify
|
||||
prefix: "(function(undefined){\"use strict\";",
|
||||
suffix: "})();"
|
||||
})
|
||||
.plugin(require("bundle-collapser/plugin"))
|
||||
.bundle()
|
||||
.pipe(source(options.compress ? "protobuf.min.js" : "protobuf.js"))
|
||||
.pipe(buffer())
|
||||
.pipe(sourcemaps.init({ loadMaps: true }))
|
||||
.pipe(
|
||||
gulpif(options.compress, uglify({
|
||||
mangle: {
|
||||
eval: true,
|
||||
properties: {
|
||||
regex: /^_/
|
||||
}
|
||||
},
|
||||
compress: {
|
||||
keep_fargs: false,
|
||||
unsafe: true
|
||||
},
|
||||
output: {
|
||||
max_line_len: 0x7fffffff
|
||||
}
|
||||
}))
|
||||
)
|
||||
.pipe(header(license, {
|
||||
date: (new Date()).toUTCString().replace("GMT", "UTC").toLowerCase(),
|
||||
version: pkg.version
|
||||
}))
|
||||
.pipe(sourcemaps.write(".", { sourceRoot: "" }))
|
||||
.pipe(vinylfs.dest(options.target))
|
||||
.on("log", console.log)
|
||||
.on("error", console.error);
|
||||
}
|
||||
Reference in New Issue
Block a user