This commit is contained in:
2017-02-10 00:33:25 +00:00
commit a3e6ce3fb5
99 changed files with 11317 additions and 0 deletions

57
tools/copy.js Normal file
View File

@@ -0,0 +1,57 @@
import path from 'path';
import chokidar from 'chokidar';
import { writeFile, copyFile, makeDir, copyDir, cleanDir } from './lib/fs';
import pkg from '../package.json';
import { format } from './run';
/**
* Copies static files such as robots.txt, favicon.ico to the
* output (build) folder.
*/
async function copy() {
await makeDir('build');
await Promise.all([
writeFile('build/package.json', JSON.stringify({
private: true,
engines: pkg.engines,
dependencies: pkg.dependencies,
scripts: {
start: 'node server.js',
},
}, null, 2)),
copyFile('LICENSE.txt', 'build/LICENSE.txt'),
copyDir('src/content', 'build/content'),
copyDir('public', 'build/public'),
]);
if (process.argv.includes('--watch')) {
const watcher = chokidar.watch([
'src/content/**/*',
'public/**/*',
], { ignoreInitial: true });
watcher.on('all', async (event, filePath) => {
const start = new Date();
const src = path.relative('./', filePath);
const dist = path.join('build/', src.startsWith('src') ? path.relative('src', src) : src);
switch (event) {
case 'add':
case 'change':
await makeDir(path.dirname(dist));
await copyFile(filePath, dist);
break;
case 'unlink':
case 'unlinkDir':
cleanDir(dist, { nosort: true, dot: true });
break;
default:
return;
}
const end = new Date();
const time = end.getTime() - start.getTime();
console.log(`[${format(end)}] ${event} '${dist}' after ${time} ms`);
});
}
}
export default copy;