我有一个节点脚本,它使用模块commander
使用命令行参数。
我想用pkg
打包,但我遇到了麻烦。
通常我会用:
执行我的脚本node index.js --file ./test.csv
但file参数可以指向用户文件系统中的任何文件夹。
我已经考虑在assets
中为scripts
配置pkg
和package.json
属性,但看起来您需要在其中指定一个文件夹,例如:
"pkg": {
"scripts": "build/**/*.js",
"assets": "views/**/*"
}
如何让zeit-pkg打包节点脚本知道文件系统中的任何可能位置?
我只是使用pkg package.json
构建,因为在package.json
我有条目:
"bin" : "index.js"
答案 0 :(得分:1)
在pkg包装的源中,在开头添加:
console.log("process.cwd() = " + process.cwd());
当你运行你的打包exe时,这会告诉你什么 您的可执行文件视为其工作目录。您可以 然后解释您的应用程序的任何相对arg路径 (比如“./index.csv”)相对于那个。
根据我的实验,pkg-applications似乎有 只要您的程序知道,就可以完全访问文件系统 要读取或写入的文件的绝对路径 甚至“要求”。
唯一棘手的事情似乎是相对路径。 原因是pkg希望你能够打包 资源/资产 - 归档到可执行文件中,然后访问它们 就像你在运行时的任何文件一样。那实际上是一个 很棒的功能,但往往超出你的需要。
如果您不需要将任何(额外)文件打包到您的 可执行文件系统访问应该是简单的 通常用绝对路径工作。你只需要 如果你想使用相对路径,请知道“你在哪里”。
我不隶属于pkg项目,所以我的回答是 不以任何方式权威。我希望zeit会投入更多 有关文件系统访问其网站的文档, 特别是跨平台。做了一些实验 我自己似乎只是通过绝对路径访问文件 适用于Windows。