2016-07-23 14 views
0

official handbook about tsconfig.json說:如果使用Webpack,我應該在tsconfig.json中指定根文件嗎?

的tsconfig.json文件指定根目錄的文件,並編制項目所需的編譯器選項。

據我瞭解,tsconfig.json根目錄的文件是tsc應該是默認編譯的文件(即沒有文件明確傳遞)。根據handbook,我可以使用「文件」或「排除」屬性來定義根文件。

如果在tsconfig.json中沒有「files」屬性,則編譯器默認將所有TypeScript(* .ts或* .tsx)文件包含在包含的目錄和子目錄中。當存在「files」屬性時,只包含指定的文件。

如果指定了「exclude」屬性,則編譯器在包含的目錄和子目錄中包含除排除的那些文件或文件夾以外的所有TypeScript(* .ts或* .tsx)文件。

「files」屬性不能與「exclude」屬性結合使用。如果兩者都指定,則「文件」屬性優先。

我沒有直接使用tsc。相反,我使用Webpack來編譯我的TypeScript文件。因此,我使用hjs-webpack它使用awesome-typescript-loader

webpack.config.js

var getConfig = require('hjs-webpack'); 

var config = getConfig({ 
    in: 'src/index.ts', 
    out: 'public', 
    clearBeforeBuild: true 
}); 

module.exports = config; 

我在webpack.config.js指定的所有入口點。如果我理解正確,awesome-typescript-loader告訴tsc這些條目文件是根文件。這意味着tsconfig.json的「文件」和「排除」屬性總是被tsc忽略。這是正確的嗎?

我經常在Webpack項目中看到jsconfig.json中的「排除」屬性。最好的例子是ts-loader(爲的WebPack另一個打字稿裝載機),其中提到這種配置步驟:

  • 添加tsconfig.json文件。
  • { 
        "compilerOptions": { 
        "target": "es5", 
        "sourceMap": true 
        }, 
        "exclude": [ 
        "node_modules" 
        ] 
    } 
    

    如果「文件」和「排除」 tsconfig.json的財產,如果只的WebPack用於編譯總是被忽略,我爲什麼要指定「文件」或「排除」財產tsconfig.json


    請寫一個評論,如果您需要進一步的信息(例如,關於我的設置)來回答這個問題。

    回答

    1

    是的,如果你正在使用webpack進行編譯,那麼你不需要包含它,你只需指向你的唯一ts文件進行編譯。您的加載程序將查找用於編譯配置的tsconfig文件。它在webapp中沒有用處。

    here is an example of webpack angular2 typescript seed i'm working on

    +0

    所以,如果不需要的話,你爲什麼要加上' 「排除」: 「node_modules」]'到[您的WebPack項目tsconfig(https://github.com/blinfo/ angular2-的WebPack種子/斑點/主/ tsconfig.json)? – maiermic

    +0

    這是我不想tsconfig看看node_modules,它是可選的,所以你可以刪除它,因爲webpack照顧它,我也要刪除它:-) –

    +0

    我有點困惑。 * tsconfig *不能查看* node_modules *,只有工具(如'tsc'或Webpack)。如果您不希望* tsconfig *查看* node_modules *,那麼您指的是哪個工具?我問,如果使用'exclude'屬性對我的Webpack構建有任何影響。你說我不需要包括它。因此,它沒有任何效果。這意味着Webpack不會考慮* tsconfig *的'exclude'屬性。所以你不提到Wepack,是嗎? – maiermic

    相關問題