@maskedeng-tom/ssrsx
Version:
server side renderer with tsx
75 lines • 3.85 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.compileAll = void 0;
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const log_1 = require("../lib/log");
const errorConsole_1 = require("../lib/errorConsole");
const scanDir_1 = require("../lib/scanDir");
const rmDir_1 = require("../lib/rmDir");
const execSync_1 = require("../lib/execSync");
const minifyJs_1 = require("../lib/minifyJs");
const changeExt_1 = require("../lib/changeExt");
////////////////////////////////////////////////////////////////////////////////
const compileAll = (clientRoot, outDir, tscOptions) => __awaiter(void 0, void 0, void 0, function* () {
const files = (yield (0, scanDir_1.scanDir)(clientRoot)).filter((f) => {
return path_1.default.extname(f) === '.ts' || path_1.default.extname(f) === '.tsx';
});
// remove outDir
(0, rmDir_1.rmDir)(outDir);
// create outDir
fs_1.default.mkdirSync(outDir, { recursive: true });
(0, log_1.log)(`mkdir: ${outDir}`);
// copy require.js and event-loader.js
(0, minifyJs_1.minifyJs)(path_1.default.join(__dirname, './client', 'event-loader.js'), path_1.default.join(outDir, 'event-loader.js'), tscOptions.inlineSourceMap);
(0, log_1.log)(`copy: ${path_1.default.join(__dirname, './client', 'event-loader.js')} ${path_1.default.join(outDir, 'event-loader.js')}`);
fs_1.default.copyFileSync(path_1.default.join(__dirname, './client', 'require.js'), path_1.default.join(outDir, 'require.js'));
(0, log_1.log)(`copy: ${path_1.default.join(__dirname, './client', 'require.js')} ${path_1.default.join(outDir, 'require.js')}`);
// compile
for (const file of files) {
// input path
const tsPath = path_1.default.join(clientRoot, file);
if (tsPath.indexOf(clientRoot) !== 0) {
return false;
}
// output path
const outputPath = (0, changeExt_1.changeExt)(path_1.default.join(outDir, file), '.js');
// create tsc options
const offsetPath = outputPath.split('/').slice(0, -1).join('/');
tscOptions.outDir = offsetPath;
const options = [];
for (const key in tscOptions) {
options.push(`--${key} ${tscOptions[key]}`);
}
// compile
const cmd = `tsc ${tsPath} ${options.join(' ')}`;
const compileResult = yield (0, execSync_1.execSync)(cmd);
if (!compileResult.result) {
(0, log_1.logError)(`Compile error: ${file} ${tsPath} ${compileResult.stdout}`);
return (0, errorConsole_1.errorConsole)('Compile error', `${tsPath}\n\t${compileResult.stdout}`);
}
(0, log_1.log)(`Compiled: ${tsPath} (${file})`);
//
if (!tscOptions.inlineSourceMap) {
(0, log_1.log)(`minifyJs: ${outputPath}`);
(0, minifyJs_1.minifyJs)(outputPath, outputPath, false);
}
}
//
return;
//
});
exports.compileAll = compileAll;
//# sourceMappingURL=compiler.js.map