@luban-cli/cli-plugin-service
Version:
A development runtime environment dependency
75 lines • 3.35 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.loadProjectOptions = void 0;
const cli_shared_utils_1 = require("@luban-cli/cli-shared-utils");
const chalk_1 = __importDefault(require("chalk"));
const shelljs_1 = __importDefault(require("shelljs"));
const path_1 = __importDefault(require("path"));
const fs_extra_1 = __importDefault(require("fs-extra"));
const help_1 = require("../commands/help");
const options_1 = require("../lib/options");
const cleanAssetPath_1 = require("./cleanAssetPath");
function requireSpecifiedConfigFile(filePath, context, configFilename) {
const spinner = new cli_shared_utils_1.Spinner();
spinner.logWithSpinner(`compiling ${chalk_1.default.green(configFilename)} ... \n`);
const configTempDir = path_1.default.resolve(context, "node_modules/@luban-cli/cli-plugin-service/temp");
const configTempDirPath = path_1.default.resolve(`${configTempDir}/${configFilename}`);
try {
const tscBinPath = `${context}/node_modules/typescript/bin/tsc`;
const compileArgs = `--module commonjs --skipLibCheck --esModuleInterop --outDir ${configTempDir}`;
const { code } = shelljs_1.default.exec(`${tscBinPath} ${filePath} ${compileArgs}`);
if (code !== 0) {
// ignore compile error, just print warn
cli_shared_utils_1.warn(`compiled ${chalk_1.default.bold(configFilename)} file failure \n`);
}
}
catch (e) { }
let configModule = undefined;
try {
configModule = cli_shared_utils_1.loadFile(`${configTempDirPath.replace(/(.+)(\.ts)/gi, "$1.js")}`);
}
catch (e) {
spinner.stopSpinner();
}
spinner.stopSpinner();
return configModule;
}
function loadProjectOptions(context, configFilename) {
let fileConfig = null;
let resolved = {};
const configPath = path_1.default.resolve(context, configFilename);
if (!fs_extra_1.default.pathExistsSync(configPath)) {
cli_shared_utils_1.error(`specified config file ${chalk_1.default.bold(`${configPath}`)} nonexistent, please check it.`);
process.exit();
}
try {
let _fileConfig = requireSpecifiedConfigFile(configPath, context, configFilename);
if (!_fileConfig || typeof _fileConfig !== "object") {
cli_shared_utils_1.error(`Error load ${chalk_1.default.bold(`${configFilename}`)}: should export an object. \n`);
_fileConfig = undefined;
}
if (help_1.isObject(_fileConfig)) {
fileConfig = _fileConfig;
}
}
catch (e) { }
if (fileConfig) {
resolved = fileConfig;
}
else {
resolved = {};
}
resolved.publicPath = resolved.publicPath
? cleanAssetPath_1.padTailSlash(resolved.publicPath)
: resolved.publicPath;
resolved.outputDir = resolved.outputDir ? cleanAssetPath_1.cleanAssetPath(resolved.outputDir) : resolved.outputDir;
options_1.validateProjectConfig(resolved, (msg) => {
cli_shared_utils_1.error(`Invalid options in ${chalk_1.default.bold(configFilename)}: ${msg}`);
});
return resolved;
}
exports.loadProjectOptions = loadProjectOptions;
//# sourceMappingURL=loadProjectConfig.js.map