我可以在不使用process.chdir()的情况下更改require()' d模块的cwd

时间:2015-05-14 14:58:49

标签: node.js module npm chdir

我有一个NodeJS模块,可以在特定目录中对文件系统进行大量工作。我希望模块内的所有文件系统操作都相对于该目录完成 - (让我们称之为/home/me/data)。

我意识到我可以使用process.chdir("/home/me/data");更改当前的工作目录,但这会弄乱使用我的模块的任何其他模块的工作目录。

是否有一种方法可以让子模块拥有与其父级不同的工作目录? 我不想将变量传递给每个子模块,以附加到fs.readFile(filepath);个调用的文件路径中。

有没有优雅的方法来实现这个目标?

P.S。子过程产卵/分叉在这里不合适。

2 个答案:

答案 0 :(得分:0)

没有。 cwd是unix中的每个进程一个。通常,在中明确引用cwd的代码通常被误导。它只适用于某些实用程序,如git,即使这样,操作系统也会处理相对于绝对转换的操作。您是否考虑过使用path.resolve扩展路径,以便在将它们传递给相关模块之前它们是绝对的?

答案 1 :(得分:0)

NPM上的'relative-fs'模块是一个解决方案https://www.npmjs.com/package/relative-fs - 它包装了fs库,使其成为相对于给定目录的方法。

免责声明:我还没有真正使用它。