You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.2 KiB
90 lines
2.2 KiB
"use strict"; |
|
|
|
exports.__esModule = true; |
|
exports.chmod = chmod; |
|
exports.readdirFilter = readdirFilter; |
|
exports.shouldIgnore = shouldIgnore; |
|
exports.addSourceMappingUrl = addSourceMappingUrl; |
|
exports.log = log; |
|
exports.transform = transform; |
|
exports.compile = compile; |
|
exports.requireChokidar = requireChokidar; |
|
var commander = require("commander"); |
|
var defaults = require("lodash/defaults"); |
|
var readdir = require("fs-readdir-recursive"); |
|
var index = require("./index"); |
|
var babel = require("babel-core"); |
|
var util = require("babel-core").util; |
|
var path = require("path"); |
|
var fs = require("fs"); |
|
|
|
function chmod(src, dest) { |
|
fs.chmodSync(dest, fs.statSync(src).mode); |
|
} |
|
|
|
function readdirFilter(filename) { |
|
return readdir(filename).filter(function (filename) { |
|
return util.canCompile(filename); |
|
}); |
|
} |
|
|
|
exports.readdir = readdir; |
|
var canCompile = exports.canCompile = util.canCompile; |
|
|
|
function shouldIgnore(loc) { |
|
return util.shouldIgnore(loc, index.opts.ignore, index.opts.only); |
|
} |
|
|
|
function addSourceMappingUrl(code, loc) { |
|
return code + "\n//# sourceMappingURL=" + path.basename(loc); |
|
} |
|
|
|
function log(msg) { |
|
if (!commander.quiet) console.log(msg); |
|
} |
|
|
|
function transform(filename, code, opts) { |
|
opts = defaults(opts || {}, index.opts); |
|
opts.filename = filename; |
|
|
|
var result = babel.transform(code, opts); |
|
result.filename = filename; |
|
result.actual = code; |
|
return result; |
|
} |
|
|
|
function compile(filename, opts) { |
|
try { |
|
var 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); |
|
}); |
|
|
|
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; |
|
} |
|
} |