0.0.19 • Published 6 months ago

@build-script/heft-typescript-plugin v0.0.19

Weekly downloads
-
License
-
Repository
-
Last release
6 months ago

typescript task - TypeScript编译器

编译TypeScript,这个插件与heft内部的typescript插件无关,但会读取config/typescript.json中的project字段。

可用选项 (options):

  • project: tsconfig位置,相对于当前package.json,如果不设置,首先读取config/typescript.json(包含rig),如果还是没有设置,则分别尝试src/tsconfig.jsontsconfig.json。如果仍然没有找到就报错。
  • extension: 更新import语句,给specifier加上.mjs.cjs。并改变实际写入的文件扩展名。(可以用其他扩展名,但没有意义)
  • fast: 如果设为true,则执行noCheck模式(即:去除类型定义,不做任何typescript相关检查)。可以在多输出时加速编译,并且防止反复报错。
  • compilerOptions: 覆盖编译选项
    • plugins: Plugin对象数组。提供扩展支持,基本兼容其他类似工具(可以直接写在tsconfig.json文件中)

Plugin对象:

fieldtypedescription
transformstring要引入的包,必须是CommonJs
importNamestring导出名称(默认为default)
afterboolean如果设为true,此插件在ts内置.js处理器之后运行
afterDeclarationsboolean如果设为true, 此插件在ts内置d.ts处理器之后运行
optionsany任意对象,直接传递给插件函数
/** 插件函数定义 */
interface IMyTransformCallback<T = ts.SourceFile | ts.Bundle> {
	(context: ts.TransformationContext, program: ts.Program, options: any, ts: typeof ts): ts.Transformer<T>;
}

注意:

  1. 当使用compilerOptions覆盖功能时,其中所有类似路径的字段(例如rootDir/typeRoots/declarationDir)都相对于当前包的根目录(即package.json所在的目录)。 官方heft-plugin-typescript插件中,这些字段是相对于rig包目录的。
  2. include/exclude/files/outDir均相对于解析后compilerOptions.rootDir(符合直觉)
{
	"do-compile": {
		"taskPlugin": {
			"pluginPackage": "@build-script/heft-typescript-plugin",
			"options": {
				"project": "src/tsconfig.json",
				// "include": [], "exclude": [], "files": []
				"extension": "mjs",
				"compilerOptions": {
					"module": "esnext",
					"outDir": "../lib/mjs",
					"plugins": [{ "transform": "xxx" }],
				},
			},
		},
	},
	"compile-again": {
		"taskDependencies": ["typescript"],
		"taskPlugin": {
			"pluginName": "typescript",
			"pluginPackage": "@build-script/heft-typescript-plugin",
			"options": {
				"project": "src/tsconfig.json",
				// "include": [], "exclude": [], "files": []
				"fast": true,
				"extension": "cjs",
				"compilerOptions": {
					"module": "commonjs",
					"outDir": "../lib/cjs",
					"plugins": [{ "transform": "yyy" }],
				},
			},
		},
	},
}
0.0.19

6 months ago

0.0.18

7 months ago

0.0.17

7 months ago

0.0.16

7 months ago