我正在创建一个包,并希望在包代码中动态使用包的名称(即登录我的/log.js文件)。
如何访问 package.js 中定义的变量?
Package.describe({
name: "author:packagename"
})
由于我无法确定包名是否正在改变分离等,我不想对它们进行硬编码。
由于
答案 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"
希望它有所帮助!