asp.net - 為什麼要從 tsconfig 排除 wwwroot?
我正在使用 VS.NET 2015 的 ASP.NET 5 範本處理一個 TypeScript 專案。我新增了一個 scripts/tsconfig.json 檔案,裡面預設包含下列 exclude 區段:
"exclude": [
"node_modules",
"wwwroot"
]
然而,在瀏覽教學時,我也看到我應該將 TypeScript 的編譯輸出配置到以下目錄:
"outDir": "../wwwroot"
從官方 TypeScript 維基說明中陳述 exclude 的定義:
如果指定了「exclude」屬性,編譯器會包含所在目錄及子目錄中的所有 TypeScript (*.ts 或 *.tsx) 檔案,但不包括那些被排除的檔案或資料夾。
我的困惑是,既然 tsconfig.json 文件會將設置應用於它所在文件夾中的虛擬 TypeScript 項目,而我的文件是在 /scripts 文件夾中,那我是否仍然需要這個設置?為什麼要排除 wwwroot,而這個設置是如何自動添加的?我不打算在我的 /scripts 文件夾中有一個 wwwroot 文件夾,所以我想理解為什麼它應該被排除?還是說它是默認添加的,因為我 本可以 將我的 tsconfig.json 文件添加到項目的根目錄,這種情況下人們可能會想排除 wwwroot 文件夾?
答案#1
wwwroot 目錄是用於輸出檔案。在典型的 ASP.NET 5 網頁專案中,你的 *.js/*.css 檔案會從 *.ts 和 *.less/*.sass 編譯而來。這些原始檔案是你專案的一部分,也是你開發的程式碼。
在建置、更改或發佈時,你會編譯成例如 *.js,將它們合併成一個文件,然後進行壓縮(也稱為 uglify),然後將它們以及你網頁專案的所有靜態文件複製到 wwwroot 的資料夾中。
使用 exclude: "wwwroot",你告訴它不要在那裡搜索 *.less/*.sass/*.ts 文件,因為這些文件不應該放在那裡。
答案#2
TypeScript 編譯器會搜尋 TypeScript 檔案(輸入)並在每個資料夾中編譯它們。使用 exclude,您可以告訴編譯器不要在 wwwroot 資料夾中搜尋(輸入)的 TypeScript 檔案。outDir 告訴 TypeScript 編譯器將編譯後的檔案 輸出 到 wwwroot。編譯後的檔案就可以提供給客戶端使用。