Better build process (#1248)
* Remove gulp, replace with custom scripts * Symlink entire dirs where possible (fixes #1232) * Significantly speed up subsequent builds (fixes #1238) * Watch process now observes new/removed files, not only changed * Add ignoreMask, exclude all files with names starting with a # * Better logging during builds * Update travis.yml to use new, non-gulp-based build
This commit is contained in:
parent
3259b63081
commit
b53fabbb58
19 changed files with 1149 additions and 1607 deletions
44
scripts/build.js
Normal file
44
scripts/build.js
Normal file
|
@ -0,0 +1,44 @@
|
|||
const colors = require('colors/safe');
|
||||
|
||||
const getBrowserify = require('./browserify');
|
||||
const getCopy = require('./copy');
|
||||
const getJS = require('./js');
|
||||
const getSass = require('./sass');
|
||||
const getSymlinks = require('./symlinks');
|
||||
const { formatDirsForMatcher, getSignatures, writeSignatures, cleanUp, onSuccess, onError} = require('./utils');
|
||||
const { dirs, symlinkDirs, copyDirs, symlinkFiles, jsFiles, ignoreMask } = require('./config');
|
||||
|
||||
if (require.main === module) {
|
||||
(async () => {
|
||||
try {
|
||||
const t1 = Date.now();
|
||||
global.isError = false; // used to prevent further output to avoid concealing errors
|
||||
const symlinks = symlinkFiles
|
||||
.concat(dirs.map(d => `${d}/**`))
|
||||
.concat([`!${formatDirsForMatcher(dirs)}/**/*.js`])
|
||||
.concat([`!${formatDirsForMatcher(copyDirs)}/**`])
|
||||
|
||||
const signatures = await getSignatures();
|
||||
const results = await Promise.all([
|
||||
getBrowserify(signatures),
|
||||
getCopy(copyDirs.map(d => `${d}/**`), { ignore: ignoreMask }, signatures),
|
||||
getJS(jsFiles, { ignore: ignoreMask }, signatures),
|
||||
getSass('scss/*.scss', { root: 'scss', ignore: ignoreMask }, signatures),
|
||||
getSymlinks(symlinks, { nodir: true, ignore: ignoreMask }, signatures),
|
||||
getSymlinks(symlinkDirs, { ignore: ignoreMask }, signatures),
|
||||
cleanUp(signatures)
|
||||
]);
|
||||
|
||||
await writeSignatures(signatures);
|
||||
for (const result of results) {
|
||||
onSuccess(result);
|
||||
}
|
||||
const t2 = Date.now();
|
||||
console.log(colors.yellow(`Total build time ${t2 - t1}ms`));
|
||||
} catch (err) {
|
||||
process.exitCode = 1;
|
||||
global.isError = true;
|
||||
onError(err);
|
||||
}
|
||||
})();
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue