Add watch tasks for smaller bits, so we’re not building the entire site for css changes

This commit is contained in:
Jocelyn Badgley (Twipped) 2020-03-05 19:42:14 -08:00
parent 65e500799b
commit cc9519a6b7
2 changed files with 45 additions and 2 deletions

View File

@ -68,3 +68,27 @@ exports.everything = function (prod = false) {
fn.displayName = prod ? 'buildForProd' : 'build'; fn.displayName = prod ? 'buildForProd' : 'build';
return fn; return fn;
}; };
exports.task = function (action, prod = false) {
const fn = async () => {
const tasks = await {
scss,
favicon,
svg,
scripts,
}[action](prod);
if (!tasks.length) return;
await fs.ensureDir(resolve('dist'));
const cache = new Cache({ prod });
await cache.load();
await evaluate(tasks, cache);
await evaluate(tasks.flat(), cache);
await cache.save();
};
fn.displayName = prod ? action + 'ForProd' : action;
return fn;
};

View File

@ -8,6 +8,11 @@ var build = require('../build');
const devBuildTask = build.everything(); const devBuildTask = build.everything();
const prodBuildTask = build.everything(true); const prodBuildTask = build.everything(true);
const scss = exports.scss = build.task('scss');
const favicon = exports.favicon = build.task('favicon');
const svg = exports.svg = build.task('svg');
const scripts = exports.scripts = build.task('scripts');
var cleanTask = require('./clean'); var cleanTask = require('./clean');
exports.clean = cleanTask; exports.clean = cleanTask;
@ -39,10 +44,24 @@ function watcher () {
'public/**/*', 'public/**/*',
'posts/**/*', 'posts/**/*',
'templates/*.{md,hbs,html}', 'templates/*.{md,hbs,html}',
'scss/*.scss',
'js/*.js',
], devBuildTask); ], devBuildTask);
watch([
'scss/*.scss',
], scss);
watch([
'js/*.js',
], scripts);
watch([
'svg/**/*.svg',
], svg);
watch([
'favicon.png',
], favicon);
server(); server();
} }