使使用 zeit-pkg 打包的节点脚本知道完整的文件系统

Make node script packaged with zeit-pkg aware of full filesystem

我有一个节点脚本,它使用模块 commander 使用命令行参数。

我想用 pkg 打包它,但我 运行 遇到了一些麻烦。

通常我会执行我的脚本:

node index.js --file ./test.csv

但文件参数可以指向用户文件系统中的任何文件夹。

我研究过在 package.json 中为 pkg 配置 assetsscripts 属性,但看起来您需要在其中指定一个文件夹,例如如:

"pkg": {
    "scripts": "build/**/*.js",
    "assets": "views/**/*"
  }

如何让 zeit-pkg 打包的节点脚本知道文件系统中的任何可能位置?

我只是用 pkg package.json 构建,因为在 package.json 中我有条目:

"bin" : "index.js"

在您的 pkg 打包源中,在开头添加:

console.log("process.cwd() = " + process.cwd());

当你 运行 你打包的 exe 这会告诉你什么 您的可执行文件被视为其工作目录。你可以 然后解释您的应用程序的任何相关参数路径 (比如“./index.csv”)相对于那个。

根据我的实验,pkg-applications 似乎有 只要您的程序知道,就可以完全访问文件系统 您要读取或写入的文件的绝对路径 甚至 "require"。

唯一棘手的事情似乎是相对路径。 原因是 pkg 希望你能够打包 resource/asset - 文件到可执行文件然后访问它们 就像您在 运行 时处理任何文件一样。那其实是一个 很棒的功能,但通常超出您的需要。

如果您不需要将任何(额外的)文件打包到您的 可执行然后文件系统访问应该是简单和 使用绝对路径正常工作。你只需要 知道 "where you are" 是否要使用相对路径。

我不隶属于 pkg 项目,所以我的回答是 任何方面都不权威。我希望zeit能多放点 有关文件系统访问其站点的文档, 特别是跨平台。做了一些实验后 我自己似乎只是通过绝对路径访问文件 在 Windows.

上有效