我正在创建一个包,并希望在包代码中动态使用包的名称(即用于登录我的/log.js 文件)。
如何访问在 package.js 中定义的变量?
Package.describe({
name: "author:packagename"
})
因为我不能确定包名是否改变了分离等,我不想对它们进行硬编码。
谢谢
最佳答案
这有点困难,因为打包系统不允许访问它。不过,您可以试一试。
使用 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
});
有点乱。 Meteor 删除了大部分内容,当它处于编译形式时,除了全局 Package
之外,这对解决这个问题没有帮助。对象删除不必要的代码。
我用 _
进行了快速测试(用于下划线包):
getPackageName = function() {
for(var packageName in Package) {
if(Package[packageName] && Package[packageName]._ === _) return packageName
}
}
console.log(getPackageName) // => "underscore"
希望对您有所帮助!
关于javascript - 如何访问包内的 meteor 包名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29245709/