@storm-software/build-tools
Version:
A comprehensive set of tools for building and managing projects within a Storm workspace. Includes builders such as rollup, rolldown, tsup, and unbuild, along with various utilities.
41 lines (39 loc) • 1.28 kB
JavaScript
// src/plugins/type-definitions.ts
import { stripIndents } from "@nx/devkit";
import { relative } from "path";
function typeDefinitions(options) {
return {
name: "storm:dts-bundle",
async generateBundle(_opts, bundle) {
for (const [_, file] of Object.entries(bundle)) {
if (file.type === "asset" || !file.isEntry || file.facadeModuleId == null) {
continue;
}
const hasDefaultExport = file.exports.includes("default");
const entrySourceFileName = relative(
options.projectRoot,
file.facadeModuleId
);
const entrySourceDtsName = entrySourceFileName.replace(
/\.[cm]?[jt]sx?$/,
""
);
const dtsFileName = file.fileName.replace(/\.[cm]?js$/, ".d.ts");
const relativeSourceDtsName = JSON.stringify("./" + entrySourceDtsName);
const dtsFileSource = hasDefaultExport ? stripIndents`
export * from ${relativeSourceDtsName};
export { default } from ${relativeSourceDtsName};
` : `export * from ${relativeSourceDtsName};
`;
this.emitFile({
type: "asset",
fileName: dtsFileName,
source: dtsFileSource
});
}
}
};
}
export {
typeDefinitions
};