How to get the current directory within a meteor S

2019-05-17 09:55发布

I am building a package for meteor to be published on Atmosphere and I need to get the current directory that the package is installed. I have tried process.cwd() in a file that's included in the package, but that gets the current directory of my app. The package is installed and working correctly, it just seems that the package is running in the same process as the app, hence process.cwd() is getting the current app dir. Does anyone know of a trick to get the current directory of the package?

This is what I have in the package files:

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

This displays /home/dknell/meteor-apps/testApp

3条回答
老娘就宠你
2楼-- · 2019-05-17 10:11

If you don't want the content, but an absolute path for another tool, you can try

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

For the <author_smart-package-name> enter your package name, but if it has your meteor user name included, change the colon (:) to underscore (_)

That seems okay on OS X and Linux, probably works in windows as well.

查看更多
女痞
3楼-- · 2019-05-17 10:16

Why would you need current directory? To access a file inside the package? Then add a file as n package asset:

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

And then you can read it with Assets.getText('file.txt') in your package.

查看更多
我命由我不由天
4楼-- · 2019-05-17 10:20

oops, this is for files within the app, not a package. anyway maybe helpful to someone

I need to access a directory path for loading a list of files

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

so you need to manually add "/assets/app" to your paths.

until meteor change this at some point.

just getting to the content of a file isn't helpful if you have a directory of changing content...

查看更多
登录 后发表回答