3

browserifyを使用して、coffee-script プロジェクトの依存関係ツリーを取得しようとしています。

browserify -t coffeeify --deps ./script.coffeeプロジェクトには、コマンドラインから依存関係ツリーを出力するオプションが付属しているようです。

スクリプト.コーヒー

console.log 'hello'
require 'a.coffee'

エラーで爆発します(簡潔にするために編集):

... 予期しないトークン ILLEGAL
    parseDeps で (/.../module-deps/index.js:172:45)
    完了時 (/.../browserify/node_modules/module-deps/index.js:152:13)
    applyTransforms で (/.../browserify/node_modules/module-deps/index.js:135:41)
    /.../browserify/node_modules/module-deps/index.js:112:17 で
    fs.js:266:14 で
    Object.oncomplete で (fs.js:107:15)

理想的には、browserify API を使用して依存関係ツリーの作成を自動化したいのですが、これをどのように達成するかは明らかではありません。

module-depsからさかのぼって作業を開始することは合理的であるように思われましたが、それが coffee-script プロジェクトの依存関係ツリーをたどるように設計されていることは明らかではありません。ただし、関連する GitHub プル リクエストは行いませんでした。この観点から、transformbrowserifyがすでにcoffee-scriptからjavascriptに変換した後、browserifyを挿入して各ファイルの依存関係を読み取ることを望んでいましたが、module-depsはファイル名のみを取得し、javascriptソース自体は取得しないようです. 次のようなもの:

require('browserify')
  .add('./script.coffee') 
  .transform(require('coffeeify')
  .transform((file) ->
    data = ''
    write = (buf) -> data += buf
    end = ->
      ## parse data for dependencies.
      console.log "File ", file, "dependencies", mdeps(data)
      @queue(data)
      @queue(null)
    return through(write, end)
  )

mdeps私が知る限り、関数が存在しないため、これは機能しません。パーサー (esprima など) の 1 つを使用してrequire呼び出しを探す必要があると思います。

browserifyを使用してコーヒースクリプトの依存関係ツリーを印刷した人はいますか? これは非常に便利なように思えます。

4

1 に答える 1

2

呼び出しが変換を取得するのを妨げるbrowserifyのバグがdeps()あるようです。そのため、deps はコンパイルされた js の代わりに生のコーヒーを解析しようとしています。

あなたのケースの修正は、次のようなことです:

var coffeeify = require('coffeeify');
require('browserify')
  .add('./script.coffee') 
  .transform(coffeeify)
  .deps({transform: [coffeeify]});

IE は変換リストをdeps()自分自身に渡します。

于 2014-01-21T20:18:55.443 に答える