UNPKG

resumefy

Version:

A simple toolkit to bring your JSON Resume to life

40 lines (39 loc) 1.38 kB
import { underline } from 'ansicolor'; import fs from 'fs'; import { Renderer } from '../render/Renderer.js'; import { log } from './log.js'; const serverUrl = (port) => `http://localhost:${port}`; export const render = async (resumeFile, { watch = false, headless = !watch, theme, outDir = '.', port = 8080 } = {}) => { const renderer = await Renderer.launch(resumeFile, { theme: theme, outDir }, { timeout: 0, defaultViewport: null, headless, pipe: true, args: ['--no-sandbox'], }, { watch, headless }); await renderer .render() .then(() => renderer.addMenu(serverUrl(port))) .catch((err) => { log.error(err); if (!watch) { process.exit(1); } }); if (watch) { log.dim(`\nWatching ${underline(resumeFile)} for changes...`); if (!headless) { renderer.startFileServer(port); } fs.watch(resumeFile, async (_event, filename) => { if (filename) { log.dim(`\n[${new Date().toISOString()}]`, underline(filename), 'changed', '\n'); await renderer .render() .then(() => Promise.all([renderer.reloadPreview(), renderer.addMenu(serverUrl(port))])) .catch(() => { }); } return; }); } };