-
-
Notifications
You must be signed in to change notification settings - Fork 5.6k
/
util.js
83 lines (70 loc) 路 2 KB
/
util.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
const commander = require("commander");
const defaults = require("lodash/defaults");
const readdir = require("fs-readdir-recursive");
const index = require("./index");
const babel = require("babel-core");
const util = require("babel-core").util;
const path = require("path");
const fs = require("fs");
export function chmod(src, dest) {
fs.chmodSync(dest, fs.statSync(src).mode);
}
export function readdirFilter(filename) {
return readdir(filename).filter(function (filename) {
return util.canCompile(filename);
});
}
export { readdir };
export const canCompile = util.canCompile;
export function shouldIgnore(loc) {
return util.shouldIgnore(loc, index.opts.ignore, index.opts.only);
}
export function addSourceMappingUrl(code, loc) {
return code + "\n//# sourceMappingURL=" + path.basename(loc);
}
export function log(msg) {
if (!commander.quiet) console.log(msg);
}
export function transform(filename, code, opts) {
opts = defaults(opts || {}, index.opts);
opts.filename = filename;
const result = babel.transform(code, opts);
result.filename = filename;
result.actual = code;
return result;
}
export function compile(filename, opts) {
try {
const code = fs.readFileSync(filename, "utf8");
return transform(filename, code, opts);
} catch (err) {
if (commander.watch) {
console.error(toErrorStack(err));
return { ignored: true };
} else {
throw err;
}
}
}
function toErrorStack(err) {
if (err._babel && err instanceof SyntaxError) {
return `${err.name}: ${err.message}\n${err.codeFrame}`;
} else {
return err.stack;
}
}
process.on("uncaughtException", function (err) {
console.error(toErrorStack(err));
process.exit(1);
});
export function requireChokidar() {
try {
return require("chokidar");
} catch (err) {
console.error(
"The optional dependency chokidar failed to install and is required for " +
"--watch. Chokidar is likely not supported on your platform."
);
throw err;
}
}