前言
npm上有个包叫typescript-plus,上一次更新是在2018年,tsc版本还停留在3.1.3,很多新语法和新功能不支持了。于是我照着这个包修改了typescript v5.0.4,让其支持了typescript-plus的功能(主要是emitReflection
、reorderFiles
和defines
)。
下载
Release 5.0.4.1 · 1045290202/typescript-plus (github.com)
用法
由于暂时没有上传到npm,无法使用npm安装,所以这里提供一下使用方法
- 先用使用命令
npm install typescript-plus
安装旧版的typescript-plus,当然全局安装也是可以的。接着找到
旧版typescript-plus安装目录,删除里面的内容。将新版typescript-plus解压,放入node_modules\typescript-plus目录里; - 如果想替换某个程序自带的typescript-plus(比如白鹭游戏引擎),也可以直接找到对应的旧版typescript-plus目录进行替换;
- 如果不想先安装旧版的typescript-plus,也可以直接解压后使用:
- 如果想调用命令行编译,可以使用
node "[解压目录/bin/tsc]" [编译参数]
命令; - 如果想通过调用api进行编译,可以使用以下的方法
- 如果想调用命令行编译,可以使用
import * as ts from "[typescript-plus解压目录]";
const projDir: string = ""; // 项目路径
function tsc() {
const configFileName: string = path.join(projDir, "tsconfig.json");
let tsConfig: string | undefined = ts.sys.readFile(configFileName);
if (!tsConfig) {
console.error("tsconfig.json不存在");
return;
}
const jsonResult: { config?: any; error?: ts.Diagnostic } = ts.parseConfigFileTextToJson(configFileName,tsConfig);
const optionResult: ts.ParsedCommandLine = ts.parseJsonConfigFileContent(jsonResult.config, ts.sys, projDir);
const tsProgram: ts.Program = ts.createProgram(optionResult.fileNames, optionResult.options);
tsProgram.emit();
// 这个方法可以拿到排序后的源代码文件路径,此功能由typescript-plus提供
// const sortResult: ts.SortingResult = ts.reorderSourceFiles(tsProgram);
}
tsc();
已知问题
- watch模式下无法使用
reorderFiles
(对文件重新排序)功能,这个问题在旧版typescript-plus包中就存在,我暂时也没有帮助其修复,详见https://github.com/domchen/typescript-plus/issues/18
其他
如果你觉得不错,可以点个star:typescript-plus by 来一斤BUG