Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

README.md

codegen - 代码生成器

根据搜索指定目录中的所有 .generator.ts 结尾的文件,调用其中的 generate 函数,将结果写入 .generated.ts。

TODOs

  • watch时增加删除生成器

使用

codegen ./root1 ./root2 ... ./rootN [--watch] [--debug]

生成器写法

import type { GenerateContext, ILogger } from '@build-script/codegen';

export async function generate(builder: GenerateContext, logger: ILogger) {
	logger.info('Generating code...');
	return 'console.log("Hello, world!");';
}

/** optional */
export async function dispose() {
	// do something
}

也可以这样写

import type { GenerateContext, ILogger } from '@build-script/codegen';

class Generator {
	async generate(builder: GenerateContext, logger: ILogger) {}

	/** optional */
	async dispose() {}
}

export default new Generator();

可以生成多个文件

import type { GenerateContext } from '@build-script/codegen';

export async function generate(builder: GenerateContext) {
	const someOtherFile1 = builder.file("base-name-of-file.tsx"); // 生成的文件名为 base-name-of-file.generated.tsx
	someOtherFile1.append("export function foo() { return <div />; }");

	return 'console.log("Hello, world!");';
}
建议
  • 在.gitignore添加: *.generated.*