如何在npm模块中引用本地文件?

Tor*_*ups 9 node.js npm

我写了一个简单的npm模块来预编译我的把手模板,当使用django压缩器对一些客户端组件进行后处理时,发现我需要发送带有几个js文件的npm模块.

目前我只是假设没有人用全局标志安装它,因为我已经"硬编码"了npm模块本身中这些依赖项的路径

我的npm模块的示例布局

/
*/bin
*/lib/main.js
*/vendor/ember.js

现在在main.js中我想使用ember.js文件...目前我的硬编码方法看起来像这样

var emberjs = fs.readFileSync('node_modules/django-ember-precompile/vendor/ember.js', 'utf8');
Run Code Online (Sandbox Code Playgroud)

再次 - 这只有效,因为我假设你在本地安装它,但我想认为node.js有更合法的方式来获取本地嵌入文件

任何人都知道如何改善这一点,使其更加"全球化"友好?

Mat*_*son 5

您可以做的是获取当前文件的目录,并设置相对于该目录的文件路径。

var path = require('path')
, fs = require('fs');

var vendor = path.join(path.dirname(fs.realpathSync(__filename)), '../vendor');
var emberjs = fs.readFileSync(vendor + '/ember.js', 'utf8');
Run Code Online (Sandbox Code Playgroud)

希望有帮助!