我正在尝试使用browserify获取咖啡脚本项目的依赖关系树。
项目似乎附带了使用browserify -t coffeeify --deps ./script.coffee
从命令行打印依赖关系树的选项,
console.log 'hello'
require 'a.coffee'
爆炸出错(为简洁而编辑):
... Unexpected token ILLEGAL at parseDeps (/.../module-deps/index.js:172:45) at done (/.../browserify/node_modules/module-deps/index.js:152:13) at applyTransforms (/.../browserify/node_modules/module-deps/index.js:135:41) at /.../browserify/node_modules/module-deps/index.js:112:17 at fs.js:266:14 at Object.oncomplete (fs.js:107:15)
我希望通过使用browserify API自动创建依赖关系树,但是如何实现这一目标并不明显。
从module-deps开始向后工作似乎是合理的,但是它的设计目的并不是为咖啡脚本项目提供依赖树。但是,我没有a related GitHub pull request。从这个角度来看,我希望注入一个browserify transform
并在浏览器已经将它从咖啡脚本转换为javascript后读取每个文件的依赖关系,但是模块代表似乎只采用文件名而不是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完成打印咖啡脚本依赖树?看起来它非常有用,如果还没有人知道它,我会感到惊讶。
答案 0 :(得分:2)
似乎有一个bug in browserify会阻止deps()
调用获取变换,因此deps正在尝试解析原始咖啡而不是已编译的js。
您的案例的修复方法是执行以下操作:
var coffeeify = require('coffeeify');
require('browserify')
.add('./script.coffee')
.transform(coffeeify)
.deps({transform: [coffeeify]});
即。将转换列表传递给deps()
。