如何访问包内的流星包名称? [英] How to access meteor package name inside package?

查看:39
本文介绍了如何访问包内的流星包名称?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在创建一个包,并希望在包代码中动态使用包的名称(即用于登录我的/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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆