Ik vraag me af hoe het mogelijk is om de transformatie typoscript in JavaScript in een cross-platform manier. Ik ben op de hoogte over de beschikbaarheid van knooppunt package manager voor typoscript , maar zijn er ook andere alternatieven die kunnen worden gebruikt op de server?
Transformeren typoscript in JavaScript
bron van user Alex Objelean
In andere talen...
De Typescript compiler is gebouwd in typoscript, en dus is beschikbaar als een JS-bestand ( tsc.js) dat kan worden uitgevoerd met behulp van zowat elke ES3-compiliant VM of JS implementatie.
Dat gezegd hebbende, de samensteller huidige bestand I / O-infrastructuur ondersteunt alleen Node en Windows Scripting Host-bestand API's. Indien u graag adviseren om steun voor een andere omgeving, voel je vrij om uit te reiken naar het team van onze GitHub website (Voorheen CodePlex )
Misschien is het niet het antwoord dat je wilt, maar als iedereen gezegd, de compiler is een JS-bestand, dus uw opties zijn de opties van het uitvoeren van een JS-bestand.
In Windows, zijn er 2 voor de hand liggende, Node en Windows Script Host.
Je weet over knooppunt al, de andere optie is een component die wordt geleverd met alle versies van Windows (denk ik), kunt u dit doen als dit:
cscript path/to/tsc.js source-file.ts
U kunt alle compiler opties door gewoon te zien:
cscript path/to/tsc.js
Op Linux Ik neem aan dat je moet kunnen (naast knooppunt) te gebruiken:
- V8-alone shell, vervangen
nodeofcscriptmetv8-shell - ExecJS https://github.com/sstephenson/execjs
Alle andere JS runner beschikbaar op het geselecteerde platform (een ander antwoord genoemd Rhino bijvoorbeeld)
Update: Een ander antwoord suggereert dat de compiler API is alleen compatibel met knooppunt en Windows Script Host (cscript tool), dus als juist is, dan op Linux zul je Node moet typoscript compileren.
Als u op zoek bent naar iets als apt get tsc(of wat dan ook de Linux / Mac-pakket managers zijn dergelijke), ik denk dat er niet is.
Ik herinner me ergens gelezen dat de I / O is geoptimaliseerd voor Node en Windows Script Host, dus als u problemen met opties, zult u waarschijnlijk eindigen met Node als op zoek naar platformonafhankelijkheid.
Update: Een ander antwoord hier bevestigt hetzelfde over compatibiliteit.
Concreet, op de server (ervan uitgaande dat uw server Node.js beschikbaar is), zou je gewoon uit te voeren:
node path/to/tsc.js yourFile1.ts yourFile2.ts [etc]
U kunt die opdracht uit te voeren zonder enige inbreng bestandsnamen aan de command-line help voor tsc.js. zien
Ik heb een project dat Typescript compileert om Javascript in Java:
https://github.com/martypitt/typescript4j
Zoals besproken in andere reacties, maakt gebruik van Rhino, dus geen afhankelijkheid npmof node.
Hier is een voorbeeld:
// 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'));
Ik gebruik het in een ander project - 'Bakehouse' on-the-fly compilatie van typoscript middelen binnen Spring omgevingen uit te voeren
Als het Java dat je dan nog hoeft te richten kun je tsc.js lopen met de Rhino motor als onderdeel van uw bouwproces.
Om ts compileren -> JS: knooppunt is beschikbaar voor alle gangbare platforms, dus ik zie niet in waarom je dat zou willen een tsc.java hebben wanneer u al een tsc.js. Het installeren van het knooppunt is geen big deal. In feite is het makkelijker dan Java.
Zodra u uw proj.js bestand, kunt u vervolgens kopiëren naar die ooit deployment platform u wilt gebruiken.
Vanuit mijn oogpunt, JavaScript - of beter gezegd ECMAScript is een alternatief voor Java. Dus ik ben blij dat ik niet hoeft te twisten JVM etc om het gereedschap te gebruiken. Maar als je dat liever Java, waarom dan eens de moeite met JS?
Ik speel rond met deze, en kan typoscript compileren met javascript met de volgende code:
<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>
Het is niet bepaald ideaal dat wel. Ik probeer iets te runnen, zodat ik kan typoscript binnen C # (met behulp van JavaScript .NET) om te zetten in JS te krijgen, maar ik krijg een stack overflow op de ts.addUnit gesprek.
Dit is wat werkte voor mij:
Ten eerste, de installatie van de typescript knooppunt module >> npm install -g typescript. Dit geeft een command line utility tsc.
next, tsc gulpfile.ts gulp-config.ts typings/tsd.d.ts
- dit zal
transpiledegulpfile.tsengulp-config.tsbestanden naargulpfile.jsengulp-config.js. Wij leveren hettypings/tsd.d.tsbestand als referentie voor de juiste transpilation. - Het
typescriptknooppunt module omvat vele opties >>tsc -hom aan te geven output directory of het bestand, enz .
Ik hoop dat dit helpt.
SublimeText2 Trick U kunt typoscript transpile javascript direct van SublimeText2 (u knooppunt nodig):
Maak een Typescript.sublime-buildbestand /Sublime Text 2/Packages/Usermet deze inhoud:
{
"cmd": ["tsc", "$file"],
"selector" : "source.ts",
"path": "/usr/local/bin:$PATH"
}
toen, nu, kunt u uw code transpile met ctrl + B of cmd + B