如何获取 Meteor 包中文件的路径



我知道如何从 Meteor 包中获取当前目录,但是如何获取项目中特定文件的路径?

节点的__dirname__filename在流星中不起作用。

这很复杂。

  1. meteor run 将项目文件复制到 <project-dir>/.meteor/local/build 内部的目录树中,以不明显的方式重新组织它们(例如,原始树中的私有子目录成为 assets 子目录(,并将其与各种 npm 模块混合以创建一个可以作为 nodejs 项目执行的捆绑包。事实上,为了避免重复,在 .meteor 目录中自动设置了一个 .gitignore 文件,它告诉 git,如果你使用它进行版本控制,不要复制 .meteor/local 目录。

  2. 如果您
  3. 更改文件,则会监视原始项目目录。 然后,更改将复制到当前项目生成目录中,并重新生成项目。

  4. 如果部署到远程系统,则生成将复制到服务器,然后运行。

process通常是一个定义的全局服务器端对象,并根据node.js API工作,因为meteor服务器代码最终在node.js中运行。

因此,您可以在服务器端运行console.log(process.cwd());以获取服务器进程的当前工作目录,通常如下所示:

~/<meteor project directory>/.meteor/local/build/programs/server

这表明当meteor run在本地完成时,原始项目文件是../../../../../,但不使用它,因为它将来可能会更改。

相反,对于包含原始项目文件的目录,您可以使用:

baseDir = process.cwd().replace(//.meteor.*$/, '');

这将获取工作目录,并截断以 /.meteor 开头的所有内容

但是,这不适用于服务器部署,因为服务器上不需要原始项目树,只需要生成。 不打算作为客户端或服务器代码的文件可能会卡在私有子目录中,正如我提到的,它成为构建中的资产子目录。 目前在构建中查找文件的方法是在本地运行中手动检查 .meteor/local,或者使用调用或模仿 gnu find 的 JS 库。

既然你提到了包,我注意到在构建中,服务器端代码最终结束于:

~/<project-dir>/.meteor/local/build/programs/server/packages

和客户端:

~/<project-dir>/.meteor/local/build/programs/web.browser/packages

最新更新