3

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

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

包.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

4

3 回答 3

1

为什么需要当前目录?访问包内的文件?然后添加一个文件作为 n 包资产:

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

然后你可以Assets.getText('file.txt')在你的包中阅读它。

于 2014-02-11T05:20:34.880 回答
0

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

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

对于 <author_smart-package-name> 输入您的包名称,但如果包含您的流星用户名,请将冒号 (:) 更改为下划线 (_)

这在 OS X 和 Linux 上似乎没问题,可能也适用于 Windows。

于 2015-03-20T21:35:15.407 回答
0

哎呀,这是应用程序内的文件,而不是包。无论如何可能对某人有帮助

我需要访问目录路径以加载文件列表

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

所以您需要手动将“/assets/app”添加到您的路径中。

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

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

于 2015-08-17T18:04:26.923 回答