
* Add a multi-process, gulp-based build system to support es6 features, async/await, jsx and scss * Add a package.json to support dependency management and allow starting the build process via npm * Replace embedded Bluebird library with npm-installed one * Add react, react-dom and web-library * Introduce a custom require() loader in include.js as well as a minimal local require() implementation in various other places
48 lines
No EOL
1.2 KiB
JavaScript
48 lines
No EOL
1.2 KiB
JavaScript
/* global onmessage: true, postMessage: false */
|
|
'use strict';
|
|
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
const babel = require('babel-core');
|
|
const mkdirp = require('mkdirp');
|
|
const options = JSON.parse(fs.readFileSync('.babelrc'));
|
|
|
|
/* exported onmessage */
|
|
onmessage = (ev) => {
|
|
const t1 = Date.now();
|
|
const sourcefile = path.normalize(ev.data);
|
|
let isError = false;
|
|
let isSkipped = false;
|
|
|
|
fs.readFile(sourcefile, 'utf8', (err, data) => {
|
|
var transformed;
|
|
if(sourcefile === 'resource/react-dom.js') {
|
|
transformed = data.replace(/ownerDocument\.createElement\((.*?)\)/gi, 'ownerDocument.createElementNS(DOMNamespaces.html, $1)');
|
|
} else if('ignore' in options && options.ignore.includes(sourcefile)) {
|
|
transformed = data;
|
|
isSkipped = true;
|
|
} else {
|
|
transformed = babel.transform(data, options).code;
|
|
}
|
|
|
|
const outfile = path.join('build', sourcefile);
|
|
isError = !!err;
|
|
|
|
mkdirp(path.dirname(outfile), err => {
|
|
isError = !!err;
|
|
|
|
fs.writeFile(outfile, transformed, err => {
|
|
isError = !!err;
|
|
const t2 = Date.now();
|
|
|
|
postMessage({
|
|
isError,
|
|
isSkipped,
|
|
sourcefile,
|
|
outfile,
|
|
processingTime: t2 - t1
|
|
});
|
|
});
|
|
});
|
|
});
|
|
}; |