如何在流星包中找到执行文件的当前路径?
我有一个需要动态包含资产列表的meteor包。
fs.readdirSync
命令需要一个完整的路径。
在app中运行包时,事情很好,因为很容易推断出包的路径。像这样:
var path = Npm.require("path");
var fs = Npm.require("fs");
// normally found inside an app/packages dir like:
var packagePath = path.join(path.resolve("."), "packages", "reactive-ace");
var srcPath = path.join(packagePath, "vendor", "ace", "src") // files rel to package root
var files = fs.readdirSync(srcPath);
files.forEach(function(file){
console.log("add_file", file)
if (file === "snippets"){return;}
addPath = path.join("vendor", "ace", "src", file);
api.add_files(addPath, "client", {isAsset: true});
});
然而,当我在本地开发时,使用$ PACKAGE_DIRS - 包repo实际上是我系统上远程的某个地方。但我无法从package.js
中推断出这一点我尝试了__dirname
和require.main.filename
,但这两者在构建流星包的背景下都是未知的。
我当前的黑客攻击涉及解析process.env.PACKAGE_DIRS
,但这很难看。
任何指示赞赏。