UNPKG

1.47 kBJavaScriptView Raw
1// _
2// | |
3// _ __ ___ _ __ __| | ___ _ __ ______ _ __ _ _ __ _
4// | '__/ _ \ '_ \ / _` |/ _ \ '__|______| '_ \| | | |/ _` |
5// | | | __/ | | | (_| | __/ | | |_) | |_| | (_| |
6// |_| \___|_| |_|\__,_|\___|_| | .__/ \__,_|\__, |
7// | | __/ |
8// |_| |___/
9
10// node
11const { relative, dirname } = require('path');
12
13// npm
14const Pug = require('pug');
15
16// local
17const { pugLogger } = require('./loggers');
18const { htmlCssErr } = require('./errors');
19const { replaceExt } = require('./utils');
20const pugLocals = require('./util/pug-locals');
21
22// export
23module.exports = function({srcDir, loggerFn, options}) {
24
25 const { isDev, isBuild } = options;
26
27 return function(srcFile) {
28
29 return new Promise((resolve, reject) => {
30 Pug.renderFile(
31 srcFile,
32 Object.assign(pugLocals(), {
33 pretty: isDev,
34 basedir: srcDir
35 }),
36 (err, data) => {
37 if (err) reject(err);
38 resolve(data);
39 }
40 );
41 })
42
43
44 .then(data => data)
45 .catch(err => {
46 if (isBuild) throw Error(err);
47 // TODO: better extraction of this error
48 // see this for reference on pug Errors https://github.com/pugjs/pug/tree/master/packages/pug-error
49 loggerFn.error(err);
50 return htmlCssErr(err, '#F2EEE6', 'pug');
51 });
52 };
53};