Wie zu sehen und alle Typoskript Quellen zu kompilieren?

stimmen
48

Ich versuche , ein Haustier Projekt zu konvertieren Typoskript und scheinen nicht in der Lage zu sein , das verwenden tscDienstprogramm meine Dateien zu sehen und zu kompilieren. Die Hilfe sagt , dass ich das verwenden sollte , -wSchalter, aber es sieht aus wie es nicht sehen können und alle kompilieren *.tsDateien im Verzeichnis rekursiv einigen. Dies scheint wie etwas tscsollte in der Lage sein zu handhaben . Was sind meine Optionen?

Veröffentlicht am 09/10/2012 um 12:39
quelle vom benutzer
In anderen Sprachen...                            


8 antworten

stimmen
74

Erstellen Sie eine Datei mit dem Namen tsconfig.jsonin Ihrem Projektstamm und umfassen folgende Zeilen in ihm:

{
    "compilerOptions": {
        "emitDecoratorMetadata": true,
        "module": "commonjs",
        "target": "ES5",
        "outDir": "ts-built",
        "rootDir": "src"
    }
}

Bitte beachten Sie, dass outDirder Pfad des Verzeichnisses sein sollte kompilierten JS - Dateien zu erhalten, und rootDirsoll der Pfad des Verzeichnisses sein , die Ihre Quelle (.ts) Dateien.

Öffnen Sie ein Terminal und führen tsc -w, wird es jede kompilieren .tsDatei im srcVerzeichnis , in .jsund speichern sie in ts-builtVerzeichnis.

Beantwortet am 10/05/2015 um 06:25
quelle vom benutzer

stimmen
20

Typoskript 1.5 Beta hat Unterstützung für eine Konfigurationsdatei eingeführt aufgerufen tsconfig.json. In dieser Datei können Sie die Compiler konfigurieren, Code-Formatierung Regeln definieren, und was noch wichtiger ist für Sie, ihn Informationen über die TS-Dateien in Ihrem Projekt.

Einmal richtig konfiguriert ist, können Sie einfach den tsc Befehl ausführen und haben es kompilieren alle Typoskript Code in Ihrem Projekt.

Wenn Sie haben wollen, die Dateien für Änderungen sehen, dann können Sie einfach auf den tsc Befehl hinzufügen --watch.

Hier ist ein Beispiel tsconfig.json Datei

{
"compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "declaration": false,
    "noImplicitAny": false,
    "removeComments": true,
    "noLib": false
},
"include": [
    "**/*"
],
"exclude": [
    "node_modules",
    "**/*.spec.ts"
]}

In dem obigen Beispiel bin ich alle .ts Dateien in meinem Projekt (rekursiv). Beachten Sie, dass Sie auch Dateien mit Hilfe eines „ausschließen“ Eigenschaft mit einem Array ausschließen.

Weitere Informationen finden Sie in der Dokumentation: http://www.typescriptlang.org/docs/handbook/tsconfig-json.html

Beantwortet am 10/06/2015 um 08:45
quelle vom benutzer

stimmen
8

Technisch hier sprechen Sie ein paar Optionen:

Wenn Sie ein IDE wie Sublime Text und integrierte MSN - Plugin für Typoskript verwenden: http://blogs.msdn.com/b/interoperability/archive/2012/10/01/sublime-text-vi-emacs-typescript-enabled. aspx können Sie ein Build - System erstellen, das die kompilieren .tsQuelle .jsautomatisch. Hier ist die Erklärung , wie Sie es tun können: Wie ein Sublime - Build - System für Typoskript konfigurieren .

Sie können sogar den Quellcode zu kompilieren Ziel definieren .jsDatei auf Datei speichern. Es ist ein erhabenes Paket auf GitHub: https://github.com/alexnj/SublimeOnSaveBuild , die dies geschieht, nur müssen Sie die umfassen tsErweiterung in der SublimeOnSaveBuild.sublime-settingsDatei.

Eine andere Möglichkeit wäre, jede Datei in der Befehlszeile zu kompilieren. Sie können wie so durch Trennen sie mit Leerzeichen auf einmal sogar mehrere Dateien zusammenstellen : tsc foo.ts bar.ts. Prüfen Sie diesen thread: Wie kann ich mehrere Quelldateien , die Mitschrift Compiler übergeben? , Aber ich denke , die erste Option handlicher ist.

Beantwortet am 09/10/2012 um 13:30
quelle vom benutzer

stimmen
6

Schauen Sie in Grunzen mit, dies zu automatisieren, gibt es zahlreiche Tutorials um, aber hier ist ein Quick-Start.

Für eine Ordnerstruktur wie:

blah/
blah/one.ts
blah/two.ts
blah/example/
blah/example/example.ts
blah/example/package.json
blah/example/Gruntfile.js
blah/example/index.html

Sie können mit leicht aus dem Beispielordner mit Typoskript beobachten und arbeiten:

npm install
grunt

Mit package.json:

{
  "name": "PROJECT",
  "version": "0.0.1",
  "author": "",
  "description": "",
  "homepage": "",
  "private": true,
  "devDependencies": {
    "typescript": "~0.9.5",
    "connect": "~2.12.0",
    "grunt-ts": "~1.6.4",
    "grunt-contrib-watch": "~0.5.3",
    "grunt-contrib-connect": "~0.6.0",
    "grunt-open": "~0.2.3"
  }
}

Und eine Grunzen-Datei:

module.exports = function (grunt) {

  // Import dependencies
  grunt.loadNpmTasks('grunt-contrib-watch');
  grunt.loadNpmTasks('grunt-contrib-connect');
  grunt.loadNpmTasks('grunt-open');
  grunt.loadNpmTasks('grunt-ts');

  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    connect: {
      server: {  // <--- Run a local server on :8089
        options: {
          port: 8089,
          base: './'
        }
      }
    },
    ts: {
      lib: { // <-- compile all the files in ../ to PROJECT.js
        src: ['../*.ts'],
        out: 'PROJECT.js',
        options: {
          target: 'es3',
          sourceMaps: false,
          declaration: true,
          removeComments: false
        }
      },
      example: {  // <--- compile all the files in . to example.js
        src: ['*.ts'],
        out: 'example.js',
        options: {
          target: 'es3',
          sourceMaps: false,
          declaration: false,
          removeComments: false
        }
      }
    },
    watch: { 
      lib: { // <-- Watch for changes on the library and rebuild both
        files: '../*.ts',
        tasks: ['ts:lib', 'ts:example']
      },
      example: { // <--- Watch for change on example and rebuild
        files: ['*.ts', '!*.d.ts'],
        tasks: ['ts:example']
      }
    },
    open: { // <--- Launch index.html in browser when you run grunt
      dev: {
        path: 'http://localhost:8089/index.html'
      }
    }
  });

  // Register the default tasks to run when you run grunt
  grunt.registerTask('default', ['ts', 'connect', 'open', 'watch']);
}
Beantwortet am 29/01/2014 um 09:36
quelle vom benutzer

stimmen
6

Der tsc Compiler sieht nur die Dateien , die Sie auf der Kommandozeile übergeben. Es wird nicht Dateien sehen , die eine inklusive verwenden /// <sourcefile>Referenz. Wenn Ihr mit der bash arbeiten, könnten Sie rekursiv verwenden finden , um alle zu finden *.tsDateien und kompilieren sie:

find . -name "*.ts" | xargs tsc -w
Beantwortet am 09/10/2012 um 13:30
quelle vom benutzer

stimmen
4

Sie können alle Dateien wie diese Uhr

tsc *.ts --watch
Beantwortet am 23/11/2017 um 12:32
quelle vom benutzer

stimmen
3

tsc 0.9.1.1 scheint keinen zu haben , Uhr - Funktion.

Sie könnten ein verwenden Powershell - Skript , wie ich sie in diesem Beitrag gemacht:

Automatisch beobachten und Typoskript Dateien kompilieren

Beantwortet am 09/09/2013 um 14:05
quelle vom benutzer

stimmen
1

Heute entwarf ich diese Ant MacroDef für das gleiche Problem wie bei Ihnen:

    <!--
    Recursively read a source directory for TypeScript files, generate a compile list in the
    format needed by the TypeScript compiler adding every parameters it take.
-->
<macrodef name="TypeScriptCompileDir">

    <!-- required attribute -->
    <attribute name="src" />

    <!-- optional attributes -->
    <attribute name="out" default="" />
    <attribute name="module" default="" />
    <attribute name="comments" default="" />
    <attribute name="declarations" default="" />
    <attribute name="nolib" default="" />
    <attribute name="target" default="" />

    <sequential>

        <!-- local properties -->
        <local name="out.arg"/>
        <local name="module.arg"/>
        <local name="comments.arg"/>
        <local name="declarations.arg"/>
        <local name="nolib.arg"/>
        <local name="target.arg"/>
        <local name="typescript.file.list"/>
        <local name="tsc.compile.file"/>

        <property name="tsc.compile.file" value="@{src}compile.list" />

        <!-- Optional arguments are not written to compile file when attributes not set -->
        <condition property="out.arg" value="" else='--out "@{out}"'>
            <equals arg1="@{out}" arg2="" />
        </condition>

        <condition property="module.arg" value="" else="--module @{module}">
            <equals arg1="@{module}" arg2="" />
        </condition>

        <condition property="comments.arg" value="" else="--comments">
            <equals arg1="@{comments}" arg2="" />
        </condition>

        <condition property="declarations.arg" value="" else="--declarations">
            <equals arg1="@{declarations}" arg2="" />
        </condition>

        <condition property="nolib.arg" value="" else="--nolib">
            <equals arg1="@{nolib}" arg2="" />
        </condition>

        <!-- Could have been defaulted to ES3 but let the compiler uses its own default is quite better -->
        <condition property="target.arg" value="" else="--target @{target}">
            <equals arg1="@{target}" arg2="" />
        </condition>

        <!-- Recursively read TypeScript source directory and generate a compile list -->
        <pathconvert property="typescript.file.list" dirsep="\" pathsep="${line.separator}">

            <fileset dir="@{src}">
                <include name="**/*.ts" />
            </fileset>

            <!-- In case regexp doesn't work on your computer, comment <mapper /> and uncomment <regexpmapper /> -->
            <mapper type="regexp" from="^(.*)$" to='"\1"' />
            <!--regexpmapper from="^(.*)$" to='"\1"' /-->

        </pathconvert>


        <!-- Write to the file -->
        <echo message="Writing tsc command line arguments to : ${tsc.compile.file}" />
        <echo file="${tsc.compile.file}" message="${typescript.file.list}${line.separator}${out.arg}${line.separator}${module.arg}${line.separator}${comments.arg}${line.separator}${declarations.arg}${line.separator}${nolib.arg}${line.separator}${target.arg}" append="false" />

        <!-- Compile using the generated compile file -->
        <echo message="Calling ${typescript.compiler.path} with ${tsc.compile.file}" />
        <exec dir="@{src}" executable="${typescript.compiler.path}">
            <arg value="@${tsc.compile.file}"/>
        </exec>

        <!-- Finally delete the compile file -->
        <echo message="${tsc.compile.file} deleted" />
        <delete file="${tsc.compile.file}" />

    </sequential>

</macrodef>

Verwenden Sie in Ihrem Build-Datei mit:

    <!-- Compile a single JavaScript file in the bin dir for release -->
    <TypeScriptCompileDir
        src="${src-js.dir}"
        out="${release-file-path}"
        module="amd"
    />

Es wird im Projekt verwendet PureMVC für Typoskript Ich arbeite zur Zeit an mit WebStorm.

Beantwortet am 24/10/2012 um 23:37
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more