クロスプラットフォームの方法でTypeScriptをJavaScriptに変換するにはどうすればよいのでしょうか。typescript用のノードパッケージマネージャーの可用性については知っていますが、サーバー側で使用できる他の選択肢はありますか?
12 に答える
短いバージョン:可能であればノードを使用します。やむを得ない昨今です。
たぶんそれはあなたが望む答えではないかもしれませんが、誰もが言ったように、コンパイラはJSファイルなので、あなたのオプションはJSファイルを実行するオプションです。
Windowsには、ノードとWindowsScriptHostの2つの明らかなものがあります。
あなたはすでにノードについて知っています、他のオプションはWindowsのすべてのバージョンに付属しているコンポーネントです(私は思う)、あなたはこれを次のように行うことができます:
cscript path/to/tsc.js source-file.ts
次の方法ですべてのコンパイラオプションを確認できます。
cscript path/to/tsc.js
Linuxでは、(ノードに加えて)次を使用できるはずだと思います。
- V8スタンドアロンシェル、置換
node
またはcscript
v8-shell
- ExecJS https://github.com/sstephenson/execjs
選択したプラットフォームで利用可能な他のJSランナー(たとえば、Rhinoに言及されている別の回答)
更新:別の回答は、コンパイラAPIがノードおよびWindows Script Host(cscriptツール)とのみ互換性があることを示唆しています。したがって、正しい場合、LinuxではTypeScriptをコンパイルするためにNodeが必要になります。
あなたがそのようなものapt get tsc
(またはLinux / Macパッケージマネージャーのようなもの)を探しているなら、私はそうではないと思います。
I / OがノードとWindowsスクリプトホスト用に最適化されていることをどこかで読んだことを覚えています。したがって、オプションに問題がある場合、プラットフォームの独立性を求めていると、おそらくノードになってしまうでしょう。
更新:ここでの別の回答は、互換性について同じことを確認しています。
具体的には、サーバー上で(サーバーでNode.jsが使用可能であると想定して)、次のコマンドを実行するだけです。
node path/to/tsc.js yourFile1.ts yourFile2.ts [etc]
ファイル名を入力せずにそのコマンドを実行すると、tsc.jsのコマンドラインヘルプが表示されます。
コマンドラインから、ts-nodeを使用できます。
npm install ts-node
次に、次のようにコマンドを呼び出します。
tsc file.ts --outFile file.js
TypescriptをJavaでJavascriptにコンパイルするプロジェクトがあります。
https://github.com/martypitt/typescript4j
他の回答で説明されているように、これはRhinoを利用するため、npm
またはに依存しませんnode
。
次に例を示します。
// 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'));
私は別のプロジェクトでそれを使用しています-'Bakehouse'は、Spring環境内でtypescriptリソースのオンザフライコンパイルを実行します
ターゲットにする必要があるのがJavaの場合は、ビルドプロセスの一部としてRhinoエンジンを使用してtsc.jsを実行できます。
ts-> jsをコンパイルするには:ノードはすべての一般的なプラットフォームで使用できるため、すでにtsc.jsがあるのにtsc.javaが必要な理由がわかりません。ノードのインストールは大したことではありません。実際、Javaよりも簡単です。
proj.jsファイルを入手したら、それを使用するデプロイメントプラットフォームにコピーできます。
私の見解では、JavaScript、より正確にはECMAScriptはJavaの代替手段です。そのため、ツールを使用するためにJVMなどを混乱させる必要がないことを嬉しく思います。しかし、Javaを好むのなら、なぜJSを気にする必要があるのでしょうか。
私はこれで遊んでいて、次のコードでjavascriptを使用してTypeScriptをコンパイルできます。
<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>
しかし、それは必ずしも理想的ではありません。(Javascript .NETを使用して)C#内でTypeScriptをJSに変換できるように何かを実行しようとしていますが、ts.addUnit呼び出しでスタックオーバーフローが発生しています。
SublimeText2のトリック SublimeText2から直接typescriptをjavascriptにトランスパイルできます(ノードが必要です):
このコンテンツTypescript.sublime-build
でファイルを作成します:/Sublime Text 2/Packages/User
{
"cmd": ["tsc", "$file"],
"selector" : "source.ts",
"path": "/usr/local/bin:$PATH"
}
次に、ctrl+Bまたはcmd+Bを使用してコードをトランスパイルできます。
これは私のために働いたものです:
まず、typescript
ノードモジュールをインストールしました>> npm install -g typescript
。これにより、コマンドラインユーティリティが提供されますtsc
。
次、tsc gulpfile.ts gulp-config.ts typings/tsd.d.ts
- これ
transpile
により、gulpfile.ts
およびgulp-config.ts
ファイルがgulpfile.js
およびになりますgulp-config.js
。typings/tsd.d.ts
正しいトランスパイルのリファレンスとしてファイル を提供します。 typescript
ノードモジュールは、出力ディレクトリやファイルなどtsc -h
を指定するための多くのオプション>>をカバーしています。
お役に立てれば。
ts-node
遅いので、おそらく使用したくないでしょう。代わりに、次の手順に従って.ts
ファイルを高速にコンパイルします(ノードがインストールされていることを確認してください)。
npm i -D @types/node typescript nodemon
npx tsconfig.json
リストから選択node
します。必要に応じて自由に変更できます。src/index.ts
プロジェクトルートにファイル名を作成します。次に、
package.json
に次の2つのスクリプトを追加します。"scripts": { "watch": "tsc -w", "dev": "nodemon dist/index.js" },
次に、以下を使用します。
npm run watch
npm run dev
また、ファイルの変更を自動的に検索し.ts
、コンパイルされたファイルの出力をターミナルで確認できます。
「firebase-tool」を使用している場合は、
npm run build
関数ディレクトリ内。