UNPKG

1.19 kBJavaScriptView Raw
1const fs = require('fs');
2const pad = require('pad');
3const path = require('path');
4const chalk = require('chalk');
5
6exports.logger = logger;
7exports.ensureDirectoryExists = ensureDirectoryExists;
8
9const loggerInstances = {};
10
11function logger({ name }) {
12 if (loggerInstances[name]) {
13 return loggerInstances[name];
14 }
15
16 const instance = {
17 name,
18 log() {
19 const args = Array.prototype.slice.call(arguments);
20 const name = pad(7, this.name);
21 const msg = args.join(' ');
22 const row = `${chalk.gray(name + ':')} ${msg}`;
23 console.log(row);
24 }
25 }
26
27 loggerInstances[name] = instance;
28 return instance;
29}
30
31const utilsLogger = logger({ name: 'utils' });
32
33function ensureDirectoryExists(filepath, basePath = null) {
34 basePath = basePath ? basePath === '/' ? process.cwd() : basePath : process.cwd();
35
36 let dirname = path.dirname(filepath);
37 if (fs.existsSync(dirname)) {
38 return true;
39 }
40 ensureDirectoryExists(dirname);
41 fs.mkdirSync(dirname);
42
43 const relDirname = path.relative(basePath, dirname);
44 utilsLogger.log(chalk.blue(pad('mkdir', 5)), relDirname);
45}
\No newline at end of file