我有一个节点脚本,它使用使用模块commander的命令行参数。
我想用pkg包装它,但我遇到了一些麻烦。
通常,我会用以下方式执行我的脚本:
node index.js --file ./test.csv但是文件参数可以指向用户文件系统中的任何文件夹。
我已经研究了如何为assets和scripts属性配置package.json中的pkg,但是您似乎需要在其中指定一个文件夹,例如:
"pkg": {
"scripts": "build/**/*.js",
"assets": "views/**/*"
}如何使zeit-pkg打包的节点脚本知道文件系统中任何可能的位置?
我只是简单地使用pkg package.json构建,因为在package.json中我有以下条目:
"bin" : "index.js"发布于 2018-06-11 13:00:17
在您的pkg打包的源代码中,在开头添加以下内容:
console.log("process.cwd() = " + process.cwd());当您运行打包的exe时,这将告诉您可执行文件所看到的作为其工作目录的内容。然后,您可以解释应用程序的任何相对arg路径(比如"./index.csv")。
根据我的实验,只要你的程序知道你想读或写的文件的绝对路径,甚至“需要”,pkg-应用程序就可以完全访问文件系统。
唯一棘手的事情似乎是相对路径。原因是pkg希望您能够将资源/资产-files打包到可执行文件中,然后像在运行时访问任何文件一样访问它们。这实际上是一个很棒的特性,但通常比您需要的要多。
如果您不需要将任何(额外的)文件打包到您的可执行文件中,那么文件系统访问应该是简单的,并且正常使用绝对路径。如果你想使用相对路径,你只需要知道“你在哪里”。
我不附属于pkg项目,所以我的答案在任何方面都不是权威的。我希望zeit能把更多关于文件系统访问的文档放到他们的网站上,特别是跨平台。在自己做了一些实验之后,在Windows上,通过它们的绝对路径来访问文件似乎是可行的。
https://stackoverflow.com/questions/49877845
复制相似问题