rsbuild-plugin-dts
Version:
Rsbuild plugin that supports emitting declaration files for TypeScript.
43 lines (42 loc) • 2.7 kB
JavaScript
import * as __WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__ from "node:path";
import * as __WEBPACK_EXTERNAL_MODULE__microsoft_api_extractor_99b102c2__ from "@microsoft/api-extractor";
import * as __WEBPACK_EXTERNAL_MODULE__rsbuild_core_1b356efc__ from "@rsbuild/core";
import * as __WEBPACK_EXTERNAL_MODULE_picocolors__ from "picocolors";
import * as __WEBPACK_EXTERNAL_MODULE__utils_js_d88b7fe1__ from "./utils.js";
async function bundleDts(options) {
const { name, cwd, distPath, dtsExtension, banner, footer, dtsEntry, tsconfigPath = 'tsconfig.json', bundledPackages = [] } = options;
try {
await Promise.all(dtsEntry.map(async (entry)=>{
const start = Date.now();
const untrimmedFilePath = (0, __WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__.join)(cwd, (0, __WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__.relative)(cwd, distPath), `${entry.name}${dtsExtension}`);
const mainEntryPointFilePath = entry.path.replace(/\?.*$/, '');
const internalConfig = {
mainEntryPointFilePath,
bundledPackages,
dtsRollup: {
enabled: true,
untrimmedFilePath
},
compiler: {
tsconfigFilePath: tsconfigPath
},
projectFolder: cwd
};
const extractorConfig = __WEBPACK_EXTERNAL_MODULE__microsoft_api_extractor_99b102c2__.ExtractorConfig.prepare({
configObject: internalConfig,
configObjectFullPath: void 0,
packageJsonFullPath: (0, __WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__.join)(cwd, 'package.json')
});
const extractorResult = __WEBPACK_EXTERNAL_MODULE__microsoft_api_extractor_99b102c2__.Extractor.invoke(extractorConfig, {
localBuild: true
});
if (!extractorResult.succeeded) throw new Error(`API Extractor error. ${__WEBPACK_EXTERNAL_MODULE_picocolors__["default"].gray(`(${name})`)}`);
await (0, __WEBPACK_EXTERNAL_MODULE__utils_js_d88b7fe1__.addBannerAndFooter)(untrimmedFilePath, banner, footer);
__WEBPACK_EXTERNAL_MODULE__rsbuild_core_1b356efc__.logger.info(`API Extractor bundle DTS succeeded: ${__WEBPACK_EXTERNAL_MODULE_picocolors__["default"].cyan(untrimmedFilePath)} in ${(0, __WEBPACK_EXTERNAL_MODULE__utils_js_d88b7fe1__.getTimeCost)(start)} ${__WEBPACK_EXTERNAL_MODULE_picocolors__["default"].gray(`(${name})`)}`);
}));
} catch (e) {
__WEBPACK_EXTERNAL_MODULE__rsbuild_core_1b356efc__.logger.error('API Extractor Error');
throw new Error(`${e}`);
}
}
export { bundleDts };