123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = _default;
- function _slash() {
- const data = require("slash");
- _slash = function () {
- return data;
- };
- return data;
- }
- function _path() {
- const data = require("path");
- _path = function () {
- return data;
- };
- return data;
- }
- function _fs() {
- const data = require("fs");
- _fs = function () {
- return data;
- };
- return data;
- }
- var util = require("./util");
- var watcher = require("./watcher");
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
- function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
- const FILE_TYPE = Object.freeze({
- NON_COMPILABLE: "NON_COMPILABLE",
- COMPILED: "COMPILED",
- IGNORED: "IGNORED",
- ERR_COMPILATION: "ERR_COMPILATION"
- });
- function outputFileSync(filePath, data) {
- (((v, w) => (v = v.split("."), w = w.split("."), +v[0] > +w[0] || v[0] == w[0] && +v[1] >= +w[1]))(process.versions.node, "10.12") ? _fs().mkdirSync : require("make-dir").sync)(_path().dirname(filePath), {
- recursive: true
- });
- _fs().writeFileSync(filePath, data);
- }
- function _default(_x) {
- return _ref.apply(this, arguments);
- }
- function _ref() {
- _ref = _asyncToGenerator(function* ({
- cliOptions,
- babelOptions
- }) {
- function write(_x2, _x3) {
- return _write.apply(this, arguments);
- }
- function _write() {
- _write = _asyncToGenerator(function* (src, base) {
- let relative = _path().relative(base, src);
- if (!util.isCompilableExtension(relative, cliOptions.extensions)) {
- return FILE_TYPE.NON_COMPILABLE;
- }
- relative = util.withExtension(relative, cliOptions.keepFileExtension ? _path().extname(relative) : cliOptions.outFileExtension);
- const dest = getDest(relative, base);
- try {
- const res = yield util.compile(src, Object.assign({}, babelOptions, {
- sourceFileName: _slash()(_path().relative(dest + "/..", src))
- }));
- if (!res) return FILE_TYPE.IGNORED;
- if (res.map && babelOptions.sourceMaps && babelOptions.sourceMaps !== "inline") {
- const mapLoc = dest + ".map";
- res.code = util.addSourceMappingUrl(res.code, mapLoc);
- res.map.file = _path().basename(relative);
- outputFileSync(mapLoc, JSON.stringify(res.map));
- }
- outputFileSync(dest, res.code);
- util.chmod(src, dest);
- if (cliOptions.verbose) {
- console.log(_path().relative(process.cwd(), src) + " -> " + dest);
- }
- return FILE_TYPE.COMPILED;
- } catch (err) {
- if (cliOptions.watch) {
- console.error(err);
- return FILE_TYPE.ERR_COMPILATION;
- }
- throw err;
- }
- });
- return _write.apply(this, arguments);
- }
- function getDest(filename, base) {
- if (cliOptions.relative) {
- return _path().join(base, cliOptions.outDir, filename);
- }
- return _path().join(cliOptions.outDir, filename);
- }
- function handleFile(_x4, _x5) {
- return _handleFile.apply(this, arguments);
- }
- function _handleFile() {
- _handleFile = _asyncToGenerator(function* (src, base) {
- const written = yield write(src, base);
- if (cliOptions.copyFiles && written === FILE_TYPE.NON_COMPILABLE || cliOptions.copyIgnored && written === FILE_TYPE.IGNORED) {
- const filename = _path().relative(base, src);
- const dest = getDest(filename, base);
- outputFileSync(dest, _fs().readFileSync(src));
- util.chmod(src, dest);
- }
- return written === FILE_TYPE.COMPILED;
- });
- return _handleFile.apply(this, arguments);
- }
- function handle(_x6) {
- return _handle.apply(this, arguments);
- }
- function _handle() {
- _handle = _asyncToGenerator(function* (filenameOrDir) {
- if (!_fs().existsSync(filenameOrDir)) return 0;
- const stat = _fs().statSync(filenameOrDir);
- if (stat.isDirectory()) {
- const dirname = filenameOrDir;
- let count = 0;
- const files = util.readdir(dirname, cliOptions.includeDotfiles);
- for (const filename of files) {
- const src = _path().join(dirname, filename);
- const written = yield handleFile(src, dirname);
- if (written) count += 1;
- }
- return count;
- } else {
- const filename = filenameOrDir;
- const written = yield handleFile(filename, _path().dirname(filename));
- return written ? 1 : 0;
- }
- });
- return _handle.apply(this, arguments);
- }
- let compiledFiles = 0;
- let startTime = null;
- const logSuccess = util.debounce(function () {
- if (startTime === null) {
- return;
- }
- const diff = process.hrtime(startTime);
- console.log(`Successfully compiled ${compiledFiles} ${compiledFiles !== 1 ? "files" : "file"} with Babel (${diff[0] * 1e3 + Math.round(diff[1] / 1e6)}ms).`);
- compiledFiles = 0;
- startTime = null;
- }, 100);
- if (cliOptions.watch) watcher.enable({
- enableGlobbing: true
- });
- if (!cliOptions.skipInitialBuild) {
- if (cliOptions.deleteDirOnStart) {
- util.deleteDir(cliOptions.outDir);
- }
- (((v, w) => (v = v.split("."), w = w.split("."), +v[0] > +w[0] || v[0] == w[0] && +v[1] >= +w[1]))(process.versions.node, "10.12") ? _fs().mkdirSync : require("make-dir").sync)(cliOptions.outDir, {
- recursive: true
- });
- startTime = process.hrtime();
- for (const filename of cliOptions.filenames) {
- compiledFiles += yield handle(filename);
- }
- if (!cliOptions.quiet) {
- logSuccess();
- logSuccess.flush();
- }
- }
- if (cliOptions.watch) {
- let processing = 0;
- const {
- filenames
- } = cliOptions;
- let getBase;
- if (filenames.length === 1) {
- const base = filenames[0];
- const absoluteBase = _path().resolve(base);
- getBase = filename => {
- return filename === absoluteBase ? _path().dirname(base) : base;
- };
- } else {
- const filenameToBaseMap = new Map(filenames.map(filename => {
- const absoluteFilename = _path().resolve(filename);
- return [absoluteFilename, _path().dirname(filename)];
- }));
- const absoluteFilenames = new Map(filenames.map(filename => {
- const absoluteFilename = _path().resolve(filename);
- return [absoluteFilename, filename];
- }));
- const {
- sep
- } = _path();
- getBase = filename => {
- const base = filenameToBaseMap.get(filename);
- if (base !== undefined) {
- return base;
- }
- for (const [absoluteFilenameOrDir, relative] of absoluteFilenames) {
- if (filename.startsWith(absoluteFilenameOrDir + sep)) {
- filenameToBaseMap.set(filename, relative);
- return relative;
- }
- }
- return "";
- };
- }
- filenames.forEach(filenameOrDir => {
- watcher.watch(filenameOrDir);
- });
- watcher.onFilesChange(_asyncToGenerator(function* (filenames) {
- processing++;
- if (startTime === null) startTime = process.hrtime();
- try {
- const written = yield Promise.all(filenames.map(filename => handleFile(filename, getBase(filename))));
- compiledFiles += written.filter(Boolean).length;
- } catch (err) {
- console.error(err);
- }
- processing--;
- if (processing === 0 && !cliOptions.quiet) logSuccess();
- }));
- }
- });
- return _ref.apply(this, arguments);
- }
|