2016-07-23 3 views
0

Die official handbook about tsconfig.json sagt:Sollte ich Root-Dateien in tsconfig.json angeben, wenn Webpack verwendet wird?

Die tsconfig.json Datei, um die Root-Dateien und die Compiler-Optionen erforderlich legt das Projekt zu kompilieren.

Soweit ich verstehe, sind die Stammdateien von tsconfig.json die Dateien, die tsc standardmäßig kompilieren sollte (das heißt keine Dateien explizit übergeben). Nach der handbook kann ich die Eigenschaft "files" oder "exclude" verwenden, um die Stammdateien zu definieren. Wenn in einer tsconfig.json keine "files" -Eigenschaft vorhanden ist, enthält der Compiler standardmäßig alle TypeScript-Dateien (* .ts oder * .tsx) im Verzeichnis und in den Unterverzeichnissen, die enthalten sind.

Wenn eine Eigenschaft "files" vorhanden ist, sind nur die angegebenen Dateien enthalten.

Wenn die Eigenschaft "exclude" angegeben ist, enthält der Compiler alle TypeScript-Dateien (* .ts oder * .tsx) im enthaltenden Verzeichnis und in den Unterverzeichnissen mit Ausnahme der ausgeschlossenen Dateien oder Ordner.

Die Eigenschaft "files" kann nicht in Verbindung mit der Eigenschaft "exclude" verwendet werden. Wenn beide angegeben sind, hat die Eigenschaft "files" Vorrang.

Ich verwende tsc nicht direkt. Stattdessen verwende ich Webpack, um meine TypeScript-Dateien zu kompilieren. Deshalb verwende ich hjs-webpack die awesome-typescript-loader verwendet:

webpack.config.js

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

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

module.exports = config; 

I alle Eintrittspunkte in meinem webpack.config.js angeben. Wenn ich es richtig verstehe, sagt awesome-typescript-loadertsc, dass diese Eintragsdateien die Stammdateien sind. Das würde bedeuten, dass die Eigenschaften "files" und "exclude" von tsconfig.json immer von tsc ignoriert werden. Ist das richtig?

Ich sehe oft eine "Exclude" -Eigenschaft in jsconfig.json von Webpack-Projekten. Bestes Beispiel dafür ist ts-loader (ein weiterer Typoskript Lader Webpack), die diese Konfiguration Schritt erwähnt:

  1. eine tsconfig.json Datei hinzufügen.
{ 
    "compilerOptions": { 
    "target": "es5", 
    "sourceMap": true 
    }, 
    "exclude": [ 
    "node_modules" 
    ] 
} 

Wenn „Dateien“ und „ausschließen“ Eigentum von tsconfig.json werden immer ignoriert, wenn nur Webpack für die Kompilierung verwendet wird, warum soll ich angeben „Dateien“ oder „ausschließen“ Eigenschaft in tsconfig.json?


Bitte schreiben Sie einen Kommentar, wenn Sie weitere Informationen (z. B. über meine Einrichtung) benötigen, um die Frage zu beantworten.

Antwort

1

Ja, wenn Sie webpack zum Kompilieren verwenden, dann müssen Sie es nicht einschließen, Sie zeigen einfach auf Ihre nur ts-Dateien, um kompiliert zu werden. Ihr Loader sucht nach der tsconfig-Datei für die Kompilierungskonfiguration. Es hat keinen Zweck in Webapp.

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

+0

Also, wenn es nicht benötigt wird, warum fügen Sie ' "ausschließen": [ "node_modules"]' auf die [TSconfig Ihres webpack Projekt] (https://github.com/blinfo/ eckig2-webpack-seed/blob/master/tsconfig.json)? – maiermic

+0

das ist für ich möchte nicht tsconfig in node_modules schauen und es ist optional, so dass Sie es entfernen können, becouse webpack kümmern sich darum, und ich werde es auch entfernen :-) –

+0

Ich bin ein wenig verwirrt. * tsconfig * kann nicht in * node_modules *, nur Werkzeuge (wie 'tsc' oder Webpack) schauen. Wenn Sie nicht möchten, dass * tsconfig * in * node_modules * schaut, auf welches Tool beziehen Sie sich? Ich habe gefragt, ob die Verwendung der 'exclude'-Eigenschaft Auswirkungen auf meinen Webpack-Build hat. Du hast gesagt, dass ich es nicht hinzufügen muss. Folglich hat es keine Wirkung. Das bedeutet, dass Webpack die Exclude-Eigenschaft von * tsconfig * nicht berücksichtigt. Du beziehst dich also nicht auf WePack, oder? – maiermic

Verwandte Themen