Jeg lurer på hvordan er det mulig å transformere Loggfila til Javascript i en cross platform måte. Jeg er klar om tilgjengeligheten av node pakkebehandleren for typescript , men er det noen andre alternativer som kan brukes på serversiden?
Transloggfila til Javascript
kilden bruker Alex Objelean
På andre språk...
Den maskinskrevet manuskript kompilatoren er bygget i maskinskrevet manuskript, og dermed er tilgjengelig som en JS-fil ( tsc.js) som kan kjøres ved hjelp av omtrent hvilken som helst ES3-compiliant VM eller JS gjennomføring.
Når det er sagt, kompilatoren nåværende fil I / O-infrastruktur støtter bare Node og Windows Scripting Host filen APIer. Hvis du ønsker å anbefale for støtte til et annet miljø, gjerne nå ut til teamet på vår GitHub stedet (tidligere CodePlex )
Kanskje det er ikke svaret du ønsker, men som alle nevnt, er kompilatoren en JS-fil, så alternativene er alternativene for å utføre en JS-fil.
I Windows er det 2 opplagte, Node og Windows Script Host.
Du vet om noden allerede, det andre alternativet er en komponent som kommer med alle versjoner av Windows (tror jeg), kan du gjøre det slik:
cscript path/to/tsc.js source-file.ts
Du kan se alle kompilatoren alternativer ved bare:
cscript path/to/tsc.js
På Linux antar jeg at du skal kunne bruke (i tillegg til node):
- V8 stående skall, erstatte
nodeellercscriptmedv8-shell - ExecJS https://github.com/sstephenson/execjs
Enhver annen JS løper tilgjengelig på den valgte plattform (et annet svar nevnt Rhino for eksempel)
Oppdatering: En annen svaret tyder kompilatoren API er bare kompatibel med node og Windows Script Host (cscript verktøyet), så hvis korrekt, deretter på Linux må du Node å kompilere Loggfila.
Hvis du er ute etter noe som apt get tsc(eller hva de Linux / Mac pakken ledere er like), jeg tror det er det ikke.
Jeg leste et sted at I / O er optimalisert for Node og Windows Script Host, så hvis du har problemer med alternativer, vil du sannsynligvis ende opp med Node dersom søker plattform uavhengighet.
Oppdatering: En annen svaret her bekrefter det samme om kompatibilitet.
Konkret på serveren (forutsatt at serveren har node.js tilgjengelig), vil du bare kjøre:
node path/to/tsc.js yourFile1.ts yourFile2.ts [etc]
Du kan kjøre denne kommandoen uten noen innspill filnavn for å se kommandolinje hjelp for tsc.js.
Jeg har et prosjekt som samler Loggfila til Javascript i Java:
https://github.com/martypitt/typescript4j
Som omtalt i andre svar, dette gjør bruk av Rhino, så har ingen avhengigheter på npmeller node.
Her er et eksempel:
// Instantiate the compiler:
TypescriptCompiler compiler = new TypescriptCompiler();
// Compile a string:
String output = compiler.compile("class Greeter { greeting: string; }");
// Or, compile and output to a file:
compiler.compile(new File("example.ts"), new File('output.js'));
Jeg bruker den i et annet prosjekt - 'Bake' til å utføre on-the-fly samling av Loggfila ressurser innenfor Spring miljøer
Hvis det er Java som du trenger for å målrette så du kan kjøre tsc.js med Rhino motor som en del av byggeprosessen.
For å kompilere ts -> JS: node er tilgjengelig for alle vanlige plattformer, slik at jeg ikke klarer å se hvorfor du ønsker å ha en tsc.java når du allerede har en tsc.js. Installere node er ingen big deal. Faktisk er det enklere enn Java.
Når du har din proj.js fil, kan du kopiere det som noensinne distribusjon plattform du ønsker å bruke.
Fra mitt synspunkt, Javascript - eller mer nøyaktig ECMAScript er et alternativ til Java. Så jeg er glad for at jeg slipper å krangle JVM etc å bruke verktøyet. Men hvis du foretrekker Java, så hvorfor engang bry med JS?
Jeg har lekt med dette, og kan kompilere Loggfila med javascript med følgende kode:
<script src=typescript.js></script>
<script>
var scriptText = ""
+ "/// <reference path=\"test.ts\"/>" + "\r\n"
+ "class Car {"
+ " constructor (private name: string) { } "
+ " getName() { "
+ " var juice = new Juice();"
+ " return name; "
+ " } "
+ "} "
+ "var car = new Car('Subaru Impreza');"
+ "console.log(car.getName());";
var TextWriter = function () { };
TextWriter.prototype = {
collected: '',
Write: function (sc) {
this.collected += sc;
},
WriteLine: function(sc) {
this.collected += sc + '\n';
},
toString: function() {
return this.collected;
}
};
var output = new TextWriter();
var tsc = new TypeScript.TypeScriptCompiler(output);
var script = tsc.addUnit(scriptText, "");
tsc.emit();
console.log(output.toString());
</script>
Det er ikke akkurat ideelt skjønt. Jeg prøver å få noe i gang slik at jeg kan konvertere Loggfila til JS innen C # (ved hjelp av Javascript .NET), men jeg får en stakkoverflyt på ts.addUnit samtalen.
SublimeText2 Trick Du kan transpile Loggfila til javascript direkte fra SublimeText2 (du trenger node):
Lag en Typescript.sublime-buildfil i /Sublime Text 2/Packages/Usermed dette innholdet:
{
"cmd": ["tsc", "$file"],
"selector" : "source.ts",
"path": "/usr/local/bin:$PATH"
}
så, nå kan du transpile koden med ctrl + B eller cmd + B
Dette er hva som fungerte for meg:
Først installert typescript node-modulen >> npm install -g typescript. Dette gir en kommandolinje verktøyet tsc.
Neste, tsc gulpfile.ts gulp-config.ts typings/tsd.d.ts
- dette vil
transpiledetgulpfile.tsoggulp-config.tsfiler tilgulpfile.jsoggulp-config.js. Vi leverertypings/tsd.d.tsfilen som referanse for riktig transpilation. - Den
typescriptnode modulen dekker mange alternativer >>tsc -hfor å spesifisere output katalog eller fil, osv .
Håper dette hjelper.