mirror of
https://github.com/smallmain/cocos-enhance-kit.git
synced 2024-12-26 11:48:29 +00:00
108 lines
2.8 KiB
JavaScript
108 lines
2.8 KiB
JavaScript
var Watchify = require('watchify');
|
|
var Browserify = require('browserify');
|
|
var Fs = require('fs');
|
|
|
|
var Path = require('path');
|
|
var through = require('through');
|
|
|
|
var Engine = require('./engine');
|
|
|
|
// var source = require('vinyl-source-stream');
|
|
// var buffer = require('vinyl-buffer');
|
|
// var sourcemaps = require('gulp-sourcemaps');
|
|
|
|
function watchFile(opts) {
|
|
var bundler = new Browserify(opts.entries, {
|
|
cache: {},
|
|
packageCache: {},
|
|
debug: true,
|
|
detectGlobals: false, // dont insert `process`, `global`, `__filename`, and `__dirname`
|
|
bundleExternal: false, // dont bundle external modules
|
|
plugin: [Watchify]
|
|
});
|
|
|
|
bundler.on('update', bundle);
|
|
|
|
if (opts.skips) {
|
|
var skips = opts.skips;
|
|
for (var i = 0; i < skips.length; ++i) {
|
|
var file = require.resolve(skips[i]);
|
|
bundler.ignore(file);
|
|
}
|
|
}
|
|
|
|
function bundle() {
|
|
var name = new Date().toTimeString() + ' : browserify for ' + opts.dest + '. ';
|
|
console.time(name);
|
|
|
|
// append prefix to index.js
|
|
var prefix = '';
|
|
if (opts.prefix) {
|
|
if (typeof opts.prefix === 'function') {
|
|
prefix = opts.prefix();
|
|
}
|
|
else if (typeof opts.prefix === 'string') {
|
|
prefix = opts.prefix;
|
|
}
|
|
}
|
|
|
|
bundler.transform(function (file) {
|
|
var data = '';
|
|
|
|
if (Path.basename(file) === 'index.js') {
|
|
data += prefix;
|
|
}
|
|
|
|
return through(write, end);
|
|
|
|
function write (buf) { data += buf; }
|
|
function end () {
|
|
this.queue(data);
|
|
this.queue(null);
|
|
}
|
|
return;
|
|
});
|
|
|
|
// do bundle
|
|
var b = bundler.bundle();
|
|
|
|
b.on('end', function () {
|
|
console.timeEnd(name);
|
|
});
|
|
|
|
b = b.pipe(Fs.createWriteStream(opts.dest));
|
|
|
|
// fixed chinese character in source maps
|
|
// b = b.pipe(source(Path.basename(opts.dest)))
|
|
// .pipe(buffer())
|
|
// .pipe(sourcemaps.init({loadMaps: true}))
|
|
// .pipe(sourcemaps.write('./'))
|
|
// .pipe(gulp.dest(Path.dirname(opts.dest)));
|
|
|
|
return b;
|
|
}
|
|
|
|
return bundle();
|
|
}
|
|
|
|
exports.preview = function (sourceFile, outputFile) {
|
|
return watchFile({
|
|
entries: sourceFile,
|
|
dest: outputFile,
|
|
prefix: 'CC_DEV = true;\n'
|
|
});
|
|
};
|
|
|
|
exports.jsbPolyfill = function (sourceFile, outputFile) {
|
|
return watchFile({
|
|
entries: sourceFile,
|
|
dest: outputFile,
|
|
prefix: function () {
|
|
var prefix = 'CC_DEV = true;\n';
|
|
prefix += 'CC_JSB = true;\n';
|
|
|
|
return prefix;
|
|
},
|
|
skips: Engine.jsbSkipModules
|
|
});
|
|
}; |