使用zeit-pkg打包节点脚本,了解完整的文件系统

时间:2018-04-17 12:14:10

标签: node.js zeit-pkg

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

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

通常我会用:

执行我的脚本
node index.js --file ./test.csv

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

我已经考虑在assets中为scripts配置pkgpackage.json属性,但看起来您需要在其中指定一个文件夹,例如:

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

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

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

"bin" : "index.js"

1 个答案:

答案 0 :(得分:1)

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

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

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

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

唯一棘手的事情似乎是相对路径。 原因是pkg希望你能够打包 资源/资产 - 归档到可执行文件中,然后访问它们 就像你在运行时的任何文件一样。那实际上是一个 很棒的功能,但往往超出你的需要。

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

我不隶属于pkg项目,所以我的回答是 不以任何方式权威。我希望zeit会投入更多 有关文件系统访问其网站的文档, 特别是跨平台。做了一些实验 我自己似乎只是通过绝对路径访问文件 适用于Windows。