2

src/templates/口ひげのテンプレートでいっぱいのディレクトリがあります。それらのコンテンツをどのように組み合わせて縮小し、CoffeeScript アプリで使用できるようにしますか?

私はすでにhttps://github.com/jashkenas/coffee-script/wiki/%5BHowTo%5D-Compiling-and-Setting-Up-Build-Toolsの指示に従って、CoffeeScript src を組み合わせて js に縮小しています。

4

1 に答える 1

8

まず、テンプレートがグローバル オブジェクトにエクスポートされていると仮定します (たとえばwindow.userpane =、 だけではなく、それぞれがエクスポートしますuserpane =)。それが最も重要なことです。それを行っていて、連結とコンパイルが正常に行われている場合、残された唯一のことは、各連結の後に自動縮小を行うことです。

簡単な答え:これに適したツールはまだありません。最良のオプションは、既存の Cakefile を次のような行で拡張することです。

fs.watchFile 'concatenated.js', ->
  exec 'uglifyjs concatenated.js'

( UgliifyJSをインストールするには、 を実行しますnpm install uglify-js。)

これでは、スクリプトが適切な順序で連結されていることを確認するという問題は解決しません。(たとえば、ファイル A とファイル B がある場合window.templates = {}、ファイル A をtemplates.userpane =ファイル B の前に連結することが非常に重要です。) そのためには、各 JS の上部に示すことができるSprocketsに注意する必要があります。その依存関係をファイルし、それらの依存関係を尊重する順序でそれらを結合します。Sprockets の作成者である Sam Stephenson は、CoffeeScript コミュニティの活発なメンバーであり、Sprockets 2 では、Sprockets での CoffeeScript に対する最高のサポートが提供されます (リポジトリはこちら)。

更新:templateこれは、ディレクトリ内のすべてのものを実際に読み取り、連結する Cake のタスクです。

templateJs = ''
files = fs.readdirSync 'template'
for file in files
  contents = fs.readFileSync file, 'utf8'
  name = file.replace /\..*/, '' # remove extension
  templateJs += "window.#{name} = '#{contents}';"

次に、連結された JS の先頭にtemplateJs. これは、テンプレートに一重引用符 ( ') がないことを前提としていることに注意してください。それらの前にバックスラッシュを置くか、一貫して二重引用符を使用してください。

于 2011-04-24T04:00:10.227 に答える