如何在包里 获取引用用这个包的文件的 路径?
比如这里有个npm package test
它的主函数是 lib/index.js
exports.say = ->
console.log("依赖引用我的文件是??")
//怎么获取? process.cwd()肯定是不行的, 因为引用这个包的文件不一定是 入口函数。
这里有个demo.coffee, 引用了 test
包,并且调用了它的say 方法
test = require 'test'
test.say()
在say函数里面是否可以获取的到demo.coffee的文件路径? 则个demo.coffee不是入口函数。
6 回复
试试这个变量 __dirname
和这个 __filename
思路一:
module.parent.filename
, 但只能获取到第一个 require 这个包的文件,因为 Node 会在第一次 require 一个包的时候将其缓存。
http://nodejs.org/api/modules.html#modules_module_parent
http://nodejs.org/api/modules.html#modules_module_filename
思路二:
从调用栈中获取上一层调用的文件,我用过 stack-trace
这个包,还算好用。
https://github.com/felixge/node-stack-trace
补一下示例(没测试):(require 'stack-trace').get()[1].getFileName()
@jysperm 包引用的缓存是可以手动清除的。所以思路一来做的话,可以使其不受缓存影响。