@hyext/builder-neorn
Version:
neo react-native builder for hyext
81 lines (80 loc) • 3.98 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 });
const fs_extra_1 = __importDefault(require("fs-extra"));
const path_1 = __importDefault(require("path"));
// @ts-ignore
const config_1 = require("@hyext/config");
const constants_1 = require("../constants");
const buildBundle_1 = __importDefault(require("./buildBundle"));
const getProviderByHostId_1 = __importDefault(require("../infoProvider/getProviderByHostId"));
const installDep_1 = __importDefault(require("./installDep"));
const matrix_compiler_1 = require("@hyext/matrix-compiler");
function buildByProjectConfig(payload) {
return __awaiter(this, void 0, void 0, function* () {
const { extUuid, extName, projectRoot, outputDir, publicPath, config = {}, buildConfig, onBeforeEach, onAfterEach, metroConfig = {}, RNVersion = process.env.HYEXT_RN_VER || '0.62.2', logger = config_1.logger, } = payload;
if (!extName) {
throw Error('生成 buildResult 需要提供小程序名称');
}
const hostId = config.hostId || 'huyaext';
const pkgContent = fs_extra_1.default.readJsonSync(path_1.default.resolve(projectRoot, 'package.json'));
const infoProvider = getProviderByHostId_1.default(hostId)({
projectRoot,
buildConfig,
dependencies: Object.assign(Object.assign({}, pkgContent.dependencies || {}), pkgContent.devDependencies || {}),
RNVersion,
isDev: false,
});
const { isValid, message } = infoProvider.SDKVersionValidation;
if (!isValid) {
// 构建环境通不过校验也没关系
logger.error(message);
// process.exit(1)
}
logger.info('\nNEO: 获取 SDK 版本...');
const shouldInstallSDKVer = infoProvider.shouldInstallSDKVer;
logger.success(`NEO: 获取 SDK 版本[done], ${JSON.stringify(shouldInstallSDKVer)}`);
const dependencies = Object.assign(Object.assign({}, shouldInstallSDKVer), constants_1.DEPENDENCIES_MAP[RNVersion]);
logger.info(`\nNEO: 安装依赖: ${JSON.stringify(dependencies)}`);
const startT = Date.now();
yield installDep_1.default(projectRoot, dependencies);
logger.success(`NEO: 安装依赖 [done], 耗时 ${(Date.now() - startT) / 1000} 秒`);
logger.info('\nNEO: 打包...');
const bundleInfo = yield buildBundle_1.default({
projectRoot,
imageBaseURL: publicPath,
buildConfig,
metroConfig,
// isUseHyCssLoader,
outputDir,
onBeforeEach,
onAfterEach,
infoProvider,
RNVersion,
logger,
});
logger.success('NEO: 打包[done]');
logger.info('\nNEO: 输出 buildResult');
const buildResult = matrix_compiler_1.utils.generateProdBuildResult({
builderName: '@hyext/builder-neorn',
extInfo: {
extName,
extUuid,
},
buildResultConfig: bundleInfo,
});
return buildResult;
});
}
exports.default = buildByProjectConfig;