web-dev-qa-db-ja.com

.NETからCoffeeScriptをコンパイルするにはどうすればよいですか?

CoffeeScriptコードをオンザフライでコンパイルし、結果のJavaScriptコードを送信するHttpHandlerを書きたいのですが。 MS [JScript] [1]とIronJSを試しましたが、成功しませんでした。 Java依存関係により配布が非常に難しくなるため、[Rhino] [2]を使用したくありません。

.NETからCoffeeScriptをコンパイルするにはどうすればよいですか?

49
liammclennan

CoffeeScript-dotnet

CoffeeScriptをコンパイルするためのコマンドラインツール。 CoffeeScriptが変更されたときに自動的に再コンパイルするファイルシステムウォッチャーが含まれています。 linux/mac用のcoffee-scriptノードパッケージとほぼ同じです。

CoffeeSharp

CoffeeScript-dotnetに似たコマンドラインツールと、asp.netサイトから要求されたときにCoffeeScriptをコンパイルするhttpハンドラーが含まれています。

SassAndCoffeeScript

リクエストに応じてsassおよびcoffeescriptファイルをコンパイルするAsp.net mvcのライブラリ。縮小と組み合わせもサポートします。

IronJSで手動でコンパイル

IronJSは、CoffeeScriptコンパイラーを正常にロードしてCoffeeScriptをコンパイルできる.NET javascriptインタープリターです。

Node.jsで手動でコンパイル

node binaries を取得し、binディレクトリをパスに追加します。 node.jsスクリプトを記述して、CoffeeScriptコンパイラーとCoffeeScriptファイルを読み込み、コンパイルしたjavascriptを保存します

36
liammclennan

CoffeeScriptがChirpyで完全にサポートされるようになりました: http://chirpy.codeplex.com/

32
Evan Nagle

ランタイムコンパイラを作成したいと具体的に言ったので、これがあなたが探しているものとは正確に一致しない可能性がありますが、主な目的がJavaScript結果を生成する方法を持っている場合は、 Mindscape Web Workbench は興味深いものです。これはVisual Studio.NET 2010の無料の拡張機能で、Extension Managerで利用できます。それはあなたが書いているように、JSにIntellisense、構文強調表示およびコンパイルを提供します。私はそれを使い始めたばかりですが、有望に見えます。スコット・ハンセルマンがそれについて話します ここ 。 LESSとSassもサポートしています。

8
Matthew Nichols

IKVM、jcoffeescript、Rhinoを使用して.NETからCoffeeScriptをコンパイルできました。 JCoffeeScriptCompilerコンストラクターオーバーロードがパラメーターなしで機能しないことを除いて、それは簡単でした。 Java.util.Collections.EMPTY_LISTをパラメーターとして使用して、正常に実行されました。

これは私がそれをした方法です:

  1. IKVM、jcoffeescript、Rhinoをダウンロードしてください。
  2. Js.jarに対してikvmcを実行し、js.dllを作成します。
  3. Jcoffeescript jarに対してikvmcを実行します。
  4. Visual Studioでjcoffeescript dllへの参照を追加します。さらに参照が必要になる可能性がありますが、それらについて警告されます。
  5. コードで新しいorg.jcoffeescript.JCoffeeScriptCompiler(Java.util.Collections.EMPTY_LIST).compile()を実行します。

次のステップは、ビルドタスクやHTTPハンドラを作成することです。

4

Jurassic JavaScript実装を使用する新しい coffeescript-dotnet プロジェクトを確認してください。

4
Trevor Burnham

CoffeeScriptコンパイラーはInternet Explorerで実行されるようになったので、最近のいくつかの微調整の後、他のJavaScriptのMSフレーバー内にも移動することをお勧めします。最新バージョンの_extras/coffee-script.js_を含めてみてください。CoffeeScript.compile(code)を使用することをお勧めします。

3
jashkenas

直接的な答えはありませんが(見つけてくれるといいのですが)、次のことを参考にして、どのように行われるかを確認してください。

1
Jafin

これは古いことはわかっていますが、非常によく似た質問に答えるためにここに来ました。VisualStudio 2012 Expressを使用してCoffeeScriptをコンパイルするにはどうすればよいですか。無料のExpressバージョンでは拡張機能が許可されていないため、かなり前から役立っていた Mindscape Workbench 拡張機能を引き続き使用できなかったことに注意してください。

それは非常に簡単であることがわかりました。 NuGetを使用して Jurassic-Coffee パッケージをインストールするだけです。

このパッケージをmindscapeワークベンチと比較して使用する利点の1つは、HTMLのスクリプトタグからコーヒーを直接参照できることです。コンパイルされたJSを縮小してキャッシュするため、要求されたコーヒーファイルが変更された場合にのみ作業を行うことができます。

<head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script src="home.coffee"></script>
</head>

Mindscapeワークベンチを使用すると、コーヒースクリプトのモジュール化に非常に便利な異なるcoffescriptファイルをバンドルできます。ジュラシックコーヒーを使用して#= requireステートメントで他のコーヒーモジュールファイルを含めます。次に例を示します。

#= require Classes\GridWrapper.coffee
class UsersGrid
  constructor:->
     @grid = new GridWrapper()

#= require coffeeファイルのstamentは、mindscapeワークベンチのアプローチよりも実際にクリーンで明確です。これは、これらすべてをインターフェースの背後に隠して、依存関係を簡単に忘れることができるようにします。

潜在的な問題が1つあります。 Nugetインストーラーは、IIS Express統合マネージパイプラインモードと互換性がない可能性があるweb.configにhttphandlerエントリを挿入します。

したがって、次のエラーが表示される場合があります。

統合マネージパイプラインモードでは適用されないASP.NET設定が検出されました。

これを修正するには、以下に示すハンドラーを削除してください。

<system.web>
  //other stuff

  <httpHandlers>
    <add type="JurassicCoffee.Web.JurassicCoffeeHttpHandler,JurassicCoffee" validate="false" path="*.coffee" verb="*" />
  </httpHandlers>

</system.web>
1
biofractal

私のメインエディターはVS 2010で、WorkBench拡張機能が大好きです。 .coffeeファイルで[保存]を押すたびにjsに自動コンパイルされるのはいいことです。また、私が読んだことのないSASSを紹介します。

とにかくyour.coffeeと.scssがソースファイルであるため、jsファイルとcssファイルも自動的に縮小/縮小する有料バージョンを提供しています。

特にVS 2010を実行している場合は、すべてのVSユーザーが先に進み、これをインストールすることをお勧めします。

唯一のノック、そして誰かが私を修正するか私に啓蒙してください、それは.coffee構文ではhtml、js、c#コードのように強調表示されないことです。 http://studiostyl.es/ の配色を使用していて、レコード http://studiostyl.es/schemes/coffee- だけを使用している可能性があります私が知っているcoffeescriptという名前の特別な構文強調表示サポートはありません。しかし、今日ワークベンチアドインを使い始めない理由はありません!

わかりましたワークベンチのウェブサイトの主張:構文の強調表示なので、多分それはおそらく私が選んだstudiostyle.esです。

1
PDA

IronJSはCoffeeScriptをサポートするようになり、一般的に他の.NET JSエンジンよりも高速です。

ここに2つを一緒に接続することについてのブログ投稿があります。
http://otac0n.com/blog/2011/06/29/CoffeeDemo-A-Simple-Demo-Of-IronJS-Using-CoffeeScript.aspx

1
John Gietzen

Visual Studio 2010のCoffeeScript

それはChirpyのフォークです(chirpyは、JavaScript、スタイルシート、ドットレスファイルをマッシュ、ミニファイ、検証するためのツールです)

「大丈夫です。他の人の作業に基づいて、私のフォークで動作していると思います。確認してください: http://chirpy.codeplex.com/SourceControl/network/Forks/Domenic/CoffeeScriptFixes = "

から http://chirpy.codeplex.com/workitem/48

1

そのポートをC#に書き込むだけです。私はJisonをC#に移植しました(これは、CoffeeScriptを実行する基礎となるプロジェクトです)。少し違うかもしれませんが、両方のJisonパーサーは同じように動作します。

私はまだそれをJisonのメインアーキテクチャにプルリクエストしていませんが、すぐにそうする予定です。

https://github.com/robertleeplummerjr

1
Robert Plummer

バンドルされているextras/coffee-script.jsをWindowsベースのスクリプトホスト(または単にwscript)で実行してみましたが、問題は報告されませんでした。次に、次の行を追加しました:

WScript.Echo(CoffeeScript.compile('a: 1'));

ファイルの最後でwscriptをもう一度実行すると、結果のJavaScriptが正しく印刷されます。

COMオブジェクトを使用していますか? MScriptオブジェクト参照の初期化を担当するコードをもう少し共有できますか?

1
StanAngeloff

私は舞台裏でWindowsスクリプトホストを使用するHttpHandlerを実行しました: https://github.com/duncansmart/LessCoffee そして素晴らしい(それもまた *。less ファイルをコンパイルします)。

それはNuGetにあります: http://nuget.org/List/Packages/LessCoffee

それはこの単純なラッパーに基づいています: https://github.com/duncansmart/coffeescript-windows

0
Duncan Smart

私はv8を使用して対話型シェルを作成しました。

https://github.com/mattn/coffee-script-v8

これは単一の実行可能ファイルとして機能します。 (外部ファイルは使用しないでください)require()は使用できません。しかし、コーヒースクリプトを学ぶには十分です。

0
mattn

CScriptにシェルアウトする代わりに、Node.jsにシェルアウトできます( ここに自己完結型のWindowsバイナリがあります

0

エクストラをコンパイルしようとしました/ coffee-script.jsファイル、変更されていないjsc 、. NET用の JScript.NET コンパイラに変更すると、多くのエラーが発生しました。ここに注目すべきものがあります:

  • 'require'は新しい予約語であり、識別子として使用しないでください
  • 'ensure'は新しい予約語であり、識別子として使用しないでください
  • タイプ「グローバルオブジェクト」のオブジェクトにはそのようなメンバーがありません

その他のエラーは、上記のエラーによって引き起こされました。

0
OnesimusUnbound

また、jurassic-coffeeをチェックアウトすることもできます。これは、jurassicで元のコンパイラーを実行するcoffee-scriptコンパイラーでもあります。

スプロケットスタイル「#= require file.coffee」または「#= require file.js "を使用すると、.coffeeファイルをモジュール化し、コンパイル直前に結合したり、.jsファイルを埋め込んだりできます。

それは、.jsファイルと.coffeeファイルのファイルウォッチャーを備えたHttpHandlerを備えています。

jurassic-coffeeはNugetパッケージとしても入手可能です

https://github.com/creamdog/JurassicCoffee

0