如何访问包内的流星包名称? [英] How to access meteor package name inside package?
问题描述
我正在创建一个包,并希望在包代码中动态使用包的名称(即用于登录我的/log.js 文件).
如何访问在 package.js 中定义的变量?
Package.describe({名称:作者:包名"})
由于我无法确定包名是否正在更改为分离等,因此我不想对它们进行硬编码.
谢谢
这样做有点困难,因为打包系统不提供访问权限.不过你可以试一试.
使用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) 返回 packageName}}流星.启动(功能(){console.log(getPackageName())//=>应该给出包名});
有点乱.Meteor 删除了大部分在编译形式下无济于事的东西,但全局 Package
对象除外,用于删除不必要的代码.
我使用 _
(用于下划线包)对此进行了快速测试:
getPackageName = function() {for(var packageName in Package) {if(Package[packageName] && Package[packageName]._ === _) 返回 packageName}}console.log(getPackageName)//=>下划线"
希望有帮助!
I am creating a package and want to use the name of the package dynamically within the package code (i.e. for logging in my /log.js file).
How do I access the variable that is defined in package.js?
Package.describe({
name: "author:packagename"
})
Since I can not be sure if package names are changing do to separation etc. , I don't want to hard code them.
Thanks
It's a bit difficult to do this as the packaging system doesn't give access to this. You can give this a shot though.
Create a publicly available global object using api.exports
, e.g api.exports("some_global", ["server", "client"])
;
The global in your package (can be anything else).
some_global = {}
Then you can run this to find the package name (make sure it has access to 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
});
It's a bit messy. Meteor removes most of the stuff mean't to help with this when its in compiled form with the exception of the global Package
object to remove unnecessary code.
I gave this a quick test with _
(used for the underscore package):
getPackageName = function() {
for(var packageName in Package) {
if(Package[packageName] && Package[packageName]._ === _) return packageName
}
}
console.log(getPackageName) // => "underscore"
Hope it helps!
这篇关于如何访问包内的流星包名称?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!