0

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

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

通常我会执行我的脚本:

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

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

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

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

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

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

"bin" : "index.js"
4

1 回答 1

2

在您的 pkg-packed 源代码中,在开头添加以下内容:

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

当您运行打包的 exe 时,这将告诉您可执行文件所看到的工作目录。然后,您可以解释应用程序的任何相对 arg 路径(如“./index.csv”)。

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

唯一棘手的似乎是相对路径。原因是 pkg 希望您能够将 resource/asset -files 打包到可执行文件中,然后像在运行时访问任何文件一样访问它们。这实际上是一个很棒的功能,但通常比您需要的更多。

如果您不需要将任何(额外)文件打包到可执行文件中,那么文件系统访问应该很简单,并且可以使用绝对路径正常工作。如果你想使用相对路径,你只需要知道“你在哪里”。

我不隶属于 pkg 项目,所以我的回答在任何方面都不具有权威性。我希望 zeit 将更多关于文件系统访问的文档放入他们的站点,尤其是跨平台的。在我自己做了一些实验之后,似乎在 Windows 上通过它们的绝对路径访问文件是可行的。

于 2018-06-11T13:00:17.407 回答