# 編譯選項 >Editor: Jung :::info - 自動編譯文件 - 編譯文件時,使用 -w 指令後,TS編譯器會自動監視文件的變化,並在文件發生變化時對文件進行重新編譯。 - 範例: - ```powershell tsc xxx.ts -w ``` - 自動編譯整個項目 - ```powershell tsc -w ``` - 如果直接使用tsc指令,則可以自動將當前專案下的所有ts文件編譯為js文件。 - 但是能直接使用tsc命令的前提時,要先在專案的根目錄下創建一個ts的配置文件 tsconfig.json - tsconfig.json是一個JSON文件,添加配置文件後,只需 tsc 命令即可完成對整個專案的編譯 - 配置選項: - include - 定義希望被編譯文件所在的目錄 - 默認值:["\*\*/\*"] - 範例: - ```json "include":["src/**/*", "tests/**/*"] ``` - 上述範例中,所有src目錄和tests目錄下的文件都會被編譯 - exclude - 定義需要排除在外的目錄 - 默認值:["node_modules", "bower_components", "jspm_packages"] - 範例: - ```json "exclude": ["./src/hello/**/*"] ``` - 上述範例中,src下hello目錄下的文件都不會被編譯 - extends - 定義被繼承的配置文件 - 範例: - ```json "extends": "./configs/base" ``` - 上述範例中,當前配置文件中會自動包含config目錄下base.json中的所有配置信息 - files - 指定被編譯文件的列表,只有需要編譯的文件少時才會用到 - 範例: - ```json "files": [ "core.ts", "sys.ts", "types.ts", "scanner.ts", "parser.ts", "utilities.ts", "binder.ts", "checker.ts", "tsc.ts" ] ``` - 列表中的文件都會被TS編譯器所編譯 - compilerOptions - 編譯選項是配置文件中非常重要也比較複雜的配置選項 - 在compilerOptions中包含多個子選項,用來完成對編譯的配置 - 項目選項 - target - 設置ts代碼編譯的目標版本 - 可選值: - ES3(默認)、ES5、ES6/ES2015、ES7/ES2016、ES2017、ES2018、ES2019、ES2020、ESNext - 範例: - ```json "compilerOptions": { "target": "ES6" } ``` - 如上設置,我們所編寫的ts代碼將會被編譯為ES6版本的js代碼 - lib - 指定代碼運行時所包含的庫(宿主環境) - 可選值: - ES5、ES6/ES2015、ES7/ES2016、ES2017、ES2018、ES2019、ES2020、ESNext、DOM、WebWorker、ScriptHost ...... - 範例: - ```json "compilerOptions": { "target": "ES6", "lib": ["ES6", "DOM"], "outDir": "dist", "outFile": "dist/aa.js" } ``` - module - 設置編譯後代碼使用的模塊化系統 - 可選值: - CommonJS、UMD、AMD、System、ES2020、ESNext、None - 範例: - ```typescript "compilerOptions": { "module": "CommonJS" } ``` - outDir - 編譯後文件的所在目錄 - 默認情況下,編譯後的js文件會和ts文件位於相同的目錄,設置outDir後可以改變編譯後文件的位置 - 範例: - ```json "compilerOptions": { "outDir": "dist" } ``` - 設置後編譯後的js文件將會生成到dist目錄 - outFile - 將所有的文件編譯為一個js文件 - 默認會將所有的編寫在全局作用域中的代碼合併為一個js文件,如果module制定了None、System或AMD則會將模塊一起合併到文件之中 - 範例: - ```json "compilerOptions": { "outFile": "dist/app.js" } ``` - rootDir - 指定代碼的根目錄,默認情況下編譯後文件的目錄結構會以最長的公共目錄為根目錄,通過rootDir可以手動指定根目錄 - 範例: - ```json "compilerOptions": { "rootDir": "./src" } ``` - allowJs - 是否對js文件編譯 - checkJs - 是否對js文件進行檢查 - 範例: - ```json "compilerOptions": { "allowJs": true, "checkJs": true } ``` - removeComments - 是否刪除註釋 - 默認值:false - noEmit - 不對代碼進行編譯 - 默認值:false - sourceMap - 是否生成sourceMap - 默認值:false - 嚴格檢查 - strict - 啟用所有的嚴格檢查,默認值為true,設置後相當於開啟了所有的嚴格檢查 - alwaysStrict - 總是以嚴格模式對代碼進行編譯 - noImplicitAny - 禁止隱式的any類型 - noImplicitThis - 禁止類型不明確的this - strictBindCallApply - 嚴格檢查bind、call和apply的參數列表 - strictFunctionTypes - 嚴格檢查函數的類型 - strictNullChecks - 嚴格的空值檢查 - strictPropertyInitialization - 嚴格檢查屬性是否初始化 - 額外檢查 - noFallthroughCasesInSwitch - 檢查switch語句包含正確的break - noImplicitReturns - 檢查函數沒有隱式的返回值 - noUnusedLocals - 檢查未使用的局部變數 - noUnusedParameters - 檢查未使用的參數 - 高級 - allowUnreachableCode - 檢查不可達代碼 - 可選值: - true,忽略不可達代碼 - false,不可達代碼將引起錯誤 - noEmitOnError - 有錯誤的情況下不進行編譯 - 默認值:false ::: ###### tags: `TypeScript`
{"metaMigratedAt":"2023-06-15T22:31:16.571Z","metaMigratedFrom":"Content","title":"編譯選項","breaks":true,"contributors":"[{\"id\":\"5f4951e4-2277-4a96-b14e-1af2cb993f78\",\"add\":5234,\"del\":2}]"}
Expand menu