2015-03-25 24 views
2

我正在創建一個包,並且想要在包代碼中動態使用包的名稱(即用於登錄我的/log.js文件)。如何訪問包內的流星包名稱?

如何訪問在中定義的變量package.js

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

,因爲如果包名正在改變做分離等等。我不能肯定,我不想硬編碼他們。

感謝

回答

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 
}); 

這是一個有點亂。流星除去大部分的東西mean't的幫助與此。當其在編譯與全球Package對象的異常形式,以除去不必要的代碼

我這給出了與_快速測試(用於下劃線封裝):

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

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

希望它有幫助!

+0

雖然它不是一個「優雅的解決方案」,但它運作良好。所以我接受這個,希望千年發展目標在某種程度上讓我們更直接地從包裝內獲取包裝範圍。謝謝! – Dino 2015-03-29 18:52:30