2016-07-12 14 views
1

Zuerst: Ich kenne den Unterschied zwischen tsc und tsc -w in der Befehlszeile. Dies ist nicht das Problem, es ist eher eine spezielle Situation:Typescript TSC CommandLine - Verhindern, dass TSC beobachtet wird

In der Tsconfig in VS Code habe ich den Beobachter durch Einstellung "watch":true aktiviert. Das ist absolut gewollt. Aber jetzt das Problem:

Ich habe einige Skripte, die die gesamte VS-Code-Projektumgebung (so das spezifische Projekt selbst) installieren sollte und möchte das Projekt zunächst von TSC kompiliert werden. Aber jetzt kompiliert es es im Watch-Modus, da die tsconfig dazu sagt. Könnte ich hier eine Ausnahme machen? Beim ersten Kompilieren in der bat-Datei möchte ich, dass tsc die Option "watch" nicht automatisch auf "true" setzt, sondern kompiliere, während die Option "Beobachten" in tsconfig aktiviert oder deaktiviert ist.

Gibt es eine Möglichkeit, das zu erreichen?

Danke!

+0

bitte, was ist der Unterschied zwischen TSC und TSC-W? – stackdave

+0

-w ist ein Parameter, der für "watch" steht. Das bedeutet, dass der TSC-Compiler nach dem Compiler-Code geöffnet bleibt und immer dann, wenn sich eine TS-Datei in Ihrem Projekt ändert, kompiliert der Compiler die Projektdateien automatisch neu Projekt ist aktuell. Ich hoffe, das hilft! – jlang

+0

danke @jlang, aber Sie wissen, warum im neuen Tutorial angular2, Skript starten zweimal tsc laufen: TSC und TSC-W, wenn ich aktiv log, kompilieren sie zweimal; ich finde kein send: "start": "tsc && gleichzeitig" npm run tsc: w \ "\ npm run lite \" ", siehe https://angular.io/docs/ts/latest/quickstart.html – stackdave

Antwort

0

ich es schließlich, indem Sie einfach mit dem Befehl Umbenennen von Fenstern gelöst:

rem Rename the tsconfig to prevent the tsc-task from watching 
rename "tsconfig.json" "temp-hide.json" 
rename "setup-config.json" "tsconfig.json" 
tsc 
rem Undo renaming since the task finished 
rename "tsconfig.json" "setup-config.json" 
rename "temp-hide.json" "tsconfig.json" 

In meiner Installation, umbenannt ich die tsconfig.json zu temp-hide.json (da die TSconfig enthält die Option Uhr) und dann eine setup-config.json in tsconfig.json umbenannt, so dass diese Datei stattdessen verwendet wird.

Wenn alle Dateien umbenannt worden sind, führe ich schließlich den Befehl tsc aus, und , nachdem dieser Befehl ausgeführt wurde, benenne ich alles zurück zu ihren ursprünglichen Dateinamen um.

0

Sie können besser als eine Umbenennung-basierte Lösung. Im Augenblick ist das Problem, wenn Sie tsc aufrufen, wird das -w() Flag von compilerOptions.watch Wert überschrieben, der in Ihrem tsconfig.json angegeben wird (das sich in demselben Verzeichnis befindet, in dem das tsc-Skript in aufgerufen wird). Wir verwenden eine in TypeScript 2.1 eingeführte Funktion: configuration inheritance.

der Basis-Konfiguration, tsconfig.json (one-off-Modus)

schreiben, was das typische Verhalten hier sein sollte. Dies wird unsere Basis (Standard) tsconfig Datei sein.

{ 
    "compilerOptions": { 
    "watch": false, 
    "module": "commonjs", 
    "target": "es6", 
    "sourceMap": true, 
    "inlineSources": true, 
    "strictNullChecks": true 
    } 
} 

Erweiterung Config tsconfig_w.json (Watch-Modus)

Jetzt schreiben wir eine Erweiterung für sie, bei der eine einzelne Eigenschaftsänderungen ist: compilerOptions.watch zu true außer Kraft gesetzt wird.

{ 
    "extends": "./tsconfig.json", 
    "compilerOptions": { 
     "watch": true 
    } 
} 

Kommandozeilenaufruf von tsc

Bevor wurden Aufrufen Sie tsc ohne weitere Argumente bereitstellt. Nun sollten Sie explizit angeben, welche tsconfig es lesen soll.

  • One-off: tsc --project tsconfig.json (dies ist die Standarddatei verwenden werden, aber sie explizit sein).

  • Watch: tsc --project tsconfig_w.json

Hinweis: Die --project Flagge in TypeScript 1.8 eingeführt wurde.

Sonderausstattung für Bequemlichkeit: package.json

Ich neige dazu, diese so bequem Skripte in meine package.json zu schreiben:

"scripts": { 
    "lib": "./node_modules/.bin/tsc --project tsconfig.json", 
    "libw": "./node_modules/.bin/tsc --project tsconfig_w.json" 
} 

würden Sie dann einfach laufen npm run lib oder npm run libw je nachdem, welches Skript benötigt.

Hinweis: Ich habe den Pfad zu TypeScript lokal und nicht global angegeben (da ich ihn nicht global installiert habe).