如何访问包内的meteor包名?

时间:2015-03-25 00:58:25

标签: javascript node.js meteor

我正在创建一个包,并希望在包代码中动态使用包的名称(即登录我的/log.js文件)。

如何访问 package.js 中定义的变量?

Package.describe({
    name: "author:packagename"
})

由于我无法确定包名是否正在改变分离等,我不想对它们进行硬编码。

由于

1 个答案:

答案 0 :(得分:2)

由于包装系统无法访问此信息,因此执行此操作有点困难。你可以试一试。

使用api.exports创建公开的全局对象,例如api.exports("some_global", ["server", "client"]);

您的包中的全局(可以是其他任何内容)。

some_global = {}

然后您可以运行此命令以查找包名称(确保它可以访问some_global

getPackageName = function() {
    for(var packageName in Package) {
        if(Package[packageName] && Package[packageName].some_global === some_global) return packageName
    } 
}

Meteor.startup(function() {
    console.log(getPackageName()) //=> Should give the package name
});

有点乱。除了全局Package对象以外,Meteor删除大部分意味着帮助解决这个问题,以便删除不必要的代码。

我用_(用于下划线包)对此进行了快速测试:

getPackageName = function() {
    for(var packageName in Package) {
        if(Package[packageName] && Package[packageName]._ === _) return packageName 
    }
}

console.log(getPackageName) // => "underscore"

希望它有所帮助!