2

開発では、Express サーバーで Coffeescript と Browserify ミドルウェアの両方を使用して、クライアント側の JS を次のように配信します。

app.use browserify mount: '/client.js', entry: './client.coffee', watch: yes

今日、依存関係をアップグレードしていて、browserify v2 Web サイトで次のことに気付きました。

browserify の最悪のアイデアの 1 つである、バンドルをホストするためのアドホックな http サーバー ミドルウェアがついになくなりました。

coffee-script のデフォルトのサポートはなくなりました。プログラムで引き続きコーヒー スクリプトを使用できます。必要なのは、js にコンパイルするか、ソース変換を自分でバンドル パイプラインにフックすることだけです。

これらの削減に同意しない場合は、v2 リファクタリングを使用して、基礎となる新しいライブラリを出発点として使用する方法について独自のビジョンを展開する方がはるかに簡単です。

けっこうだ。

唯一のことは、新しい API のドキュメントを読んだことがありますが、実際に独自のミドルウェアを実装する方法に少し戸惑っています。実際、高速ミドルウェアとしては言うまでもなく、browserify.add()andを使用して機能する基本的なスタンドアロンの例を取得することさえできません。browserify.bundle()

v1 を引き続き使用することもできますが、このプロジェクトはまだ開発中であるため、依存関係を最新の状態に保ちたいと考えています。どんな提案でも大歓迎です。

アップデート:

私はこれまでのところ持っています:

browserify = require 'browserify'
coffee = require 'coffee-script'
through = require 'through'

app.get '/client.js', (req, res) ->
  b = browserify()
  b.add './client.coffee'
  b.transform (file) ->
    write = (buf) ->
      data += buf
    end = ->
      @queue coffee.compile(data)
      @queue null
    data = ''
    return through(write, end)
  b.bundle {}, (err, src) ->
    res.send src

require './module'これは機能しますが、以前はそうしなければならないように見えた場合を除きrequire './module.coffee'ます。これは本当に理想的ではありません。アプリのすべての要件を更新する必要はありません。

4

5 に答える 5

2

開発用のうなり声が好きなら、私はこのタスクを開発しました: https://github.com/amiorin/grunt-watchify

依存関係をキャッシュし、ファイルシステムを監視します。このため、ビルドは非常に高速です。grunt-contrib-watch および grunt-contrib-connect と一緒に、または単独で使用できます。github リポジトリで Gruntfile.js の例を見つけることができます。

grunt を使用しない場合は、 @substack のオリジナルの watchify を使用できます: https://github.com/substack/watchify

もちろんコーヒーも一緒に使えますtransform

于 2013-06-17T20:09:03.363 に答える
1

この時点で、2 つのトランスフォーマー オプションがあり、どちらもソース マップをサポートしています。

それらは同じですが、後者はcoffee実際に変更されたファイルのみを再コンパイルするため、開発プロセスが高速化されます。

どちらの場合も、コマンド ラインを使用している--debug場合はフラグを渡すか、ビルド スクリプトを使用している場合は関数に指定して、ソース マップをオンにする必要があります。{debug: true }bundle

また、ブラウザでソース マップを有効にしてください。

このすべてについてブログを書いたので、詳細が必要な場合は、ここで必要なすべての情報を見つける必要があります。

于 2013-04-13T15:53:26.950 に答える
1

browserify 用の coffee-script コンパイル ミドルウェアを使用する方法は、-t フラグを指定した変換モジュール、または -c フラグを指定した変換コマンドのいずれかです。それらには制限がありますが、単純な coffeescript コンパイルのトリックを実行します。いずれかのフラグを使用すると、必要な各ファイルは、分析されて出力バンドルに連結される前に、プロセス (たとえば、coffeescript から javascript にコンパイルされる) を介して実行されます。

実際、browserify の readme には、coffeescript で正確に行う方法に関するドキュメントがあります。

https://github.com/substack/node-browserify#btransformtr

あなたの場合の最も簡単な方法は、次のコマンドを使用することです。

browserify -c 'coffee -sc' main.coffee > bundle.js

エントリポイントのcoffeescriptファイルがmain.coffeeと呼ばれると仮定します。

Substack は、これをまとめた coffeeify npm モジュールも作成しましたが、これは現在より遅れている coffee-script バージョンです (たとえば、ソース マップはありません)。

于 2013-03-09T12:55:35.800 に答える