前言
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