refactor(build): simplify and modularize
simplify: - use same html file for dart and JS - build benchmarks automatically when doing `gulp build` - centralize configuration modularize: - move all build tasks into separate node.js modules under `tools/build`. changes: - the `build` folder is now the `dist` folder Closes #284
This commit is contained in:
45
tools/build/util.js
Normal file
45
tools/build/util.js
Normal file
@ -0,0 +1,45 @@
|
||||
var Q = require('q');
|
||||
var minimatch = require('minimatch');
|
||||
|
||||
module.exports = {
|
||||
processToPromise: processToPromise,
|
||||
streamToPromise: streamToPromise,
|
||||
renameSrcFolder: renameSrcFolder,
|
||||
filterByFile: filterByFile
|
||||
};
|
||||
|
||||
function filterByFile(valuesWithPatterns, fileName) {
|
||||
var match = null;
|
||||
for (var pattern in valuesWithPatterns) {
|
||||
if (pattern !== 'default' && minimatch(fileName, pattern)) {
|
||||
match = valuesWithPatterns[pattern];
|
||||
}
|
||||
}
|
||||
return match || valuesWithPatterns['default'];
|
||||
}
|
||||
|
||||
function processToPromise(process) {
|
||||
var defer = Q.defer();
|
||||
process.on('close', function(code) {
|
||||
if (code) {
|
||||
defer.reject(code);
|
||||
} else {
|
||||
defer.resolve();
|
||||
}
|
||||
});
|
||||
return defer.promise;
|
||||
}
|
||||
|
||||
function streamToPromise(stream) {
|
||||
var defer = Q.defer();
|
||||
stream.on('end', defer.resolve);
|
||||
stream.on('error', defer.reject);
|
||||
return defer.promise;
|
||||
}
|
||||
|
||||
function renameSrcFolder(plugins, srcFolderMapping) {
|
||||
return plugins.rename(function(file) {
|
||||
var srcOutputFolder = filterByFile(srcFolderMapping, file.dirname);
|
||||
file.dirname = file.dirname.replace(/\bsrc\b/, srcOutputFolder);
|
||||
});
|
||||
}
|
Reference in New Issue
Block a user