59 lines
1.7 KiB
TypeScript
59 lines
1.7 KiB
TypeScript
import * as plugins from './plugins.js';
|
|
import * as paths from './paths.js';
|
|
|
|
export class TypeDoc {
|
|
public smartshellInstance = new plugins.smartshell.Smartshell({
|
|
executor: 'bash',
|
|
pathDirectories: [paths.binDir],
|
|
});
|
|
|
|
// Static
|
|
public static async isTypeDocDir(dirPathArg: string): Promise<boolean> {
|
|
return true;
|
|
}
|
|
|
|
// Instance
|
|
public typedocDirectory: string;
|
|
constructor(dirPathArg) {
|
|
this.typedocDirectory = dirPathArg;
|
|
}
|
|
|
|
public async compile(options?: { publicSubdir?: string }) {
|
|
const data = {
|
|
compilerOptions: {
|
|
experimentalDecorators: true,
|
|
useDefineForClassFields: false,
|
|
target: 'ES2022',
|
|
module: 'NodeNext',
|
|
moduleResolution: 'NodeNext',
|
|
esModuleInterop: true,
|
|
verbatimModuleSyntax: true,
|
|
skipLibCheck: true,
|
|
},
|
|
include: [],
|
|
};
|
|
let startDirectory = '';
|
|
if (plugins.smartfile.fs.isDirectory(plugins.path.join(paths.cwd, './ts'))) {
|
|
data.include.push(plugins.path.join(paths.cwd, './ts/**/*'));
|
|
startDirectory = 'ts';
|
|
}
|
|
|
|
if (plugins.smartfile.fs.isDirectory(plugins.path.join(paths.cwd, './ts_web'))) {
|
|
data.include.push(plugins.path.join(paths.cwd, './ts_web/**/*'));
|
|
if (!startDirectory) {
|
|
startDirectory = 'ts_web';
|
|
}
|
|
}
|
|
|
|
await plugins.smartfile.memory.toFs(JSON.stringify(data), paths.tsconfigFile);
|
|
let targetDir = paths.publicDir;
|
|
if (options?.publicSubdir) {
|
|
targetDir = plugins.path.join(targetDir, options.publicSubdir);
|
|
}
|
|
await this.smartshellInstance.exec(
|
|
`typedoc --tsconfig ${paths.tsconfigFile} --out ${targetDir} ${startDirectory}/index.ts`,
|
|
);
|
|
plugins.smartfile.fs.remove(paths.tsconfigFile);
|
|
}
|
|
}
|