3

我正在尝试使用browserify获取咖啡脚本项目的依赖树。

似乎该项目带有从命令行打印依赖关系树的选项browserify -t coffeeify --deps ./script.coffee,使用

脚本.coffee

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

因错误而爆炸(为简洁而编辑):

... 意外令牌非法
    在 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开始向后工作似乎是合理的,但显然它旨在遍历咖啡脚本项目的依赖关系树。但是,我没有相关的 GitHub 拉取请求。鉴于此,我希望transform在 browserify 已经将其从咖啡脚本转换为 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 等)来查找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 回答