我正在构建一个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
答案 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;到你的路上。
直到流星在某个时刻改变它。
如果您有一个更改内容的目录,那么只是获取文件的内容并不会有帮助...