如何获取流星智能包中的当前目录

时间:2013-05-23 18:30:25

标签: meteor meteorite

我正在构建一个meteor的包,要在Atmosphere上发布,我需要获取安装包的当前目录。我已经在包中包含的文件中尝试了process.cwd(),但它获取了我的应用程序的当前目录。软件包已安装且工作正常,似乎软件包在与应用程序相同的进程中运行,因此process.cwd()正在获取当前的应用程序目录。有没有人知道获取包的当前目录的技巧?

这就是我在包文件中的内容:

package.js

Package.on_use(function (api) {
    api.use('sync-methods', 'server');
    api.add_files(["lib/api_server.js"], "server");
    api.add_files(["lib/api_client.js"], "client");
});

api_server.js

var cwd = process.cwd();
console.log(cwd);

这会显示/home/dknell/meteor-apps/testApp

3 个答案:

答案 0 :(得分:1)

为什么需要当前目录?要访问包内的文件?然后将文件添加为n package asset:

api.add_files(['file.txt'], 'server', {isAsset: true});

然后您可以在包中使用Assets.getText('file.txt')阅读。

答案 1 :(得分:0)

如果您不想要内容,而是其他工具的绝对路径,可以尝试

var path = Npm.require('path');
var base = path.resolve('.');
var assetsBase = path.join(base, '/assets/packages/<author_smart-package-name>');

对于&lt; author_smart-package-name&gt;输入您的包名,但如果它包含您的meteor用户名,请将冒号(:)更改为下划线(_)

在OS X和Linux上似乎没问题,也可以在Windows中运行。

答案 2 :(得分:0)

oops,这适用于应用内的文件,而不是包。无论如何可能对某人有帮助

我需要访问用于加载文件列表的目录路径

// files in /private get built to:
//      .meteorlocal/build/programs/server/assets/app/
// base path resolves to:
//      .meteor/local/build/programs/server

所以你需要手动添加&#34; / assets / app&#34;到你的路上。

直到流星在某个时刻改变它。

如果您有一个更改内容的目录,那么只是获取文件的内容并不会有帮助...