使使用 zeit-pkg 打包的节点脚本知道完整的文件系统
Make node script packaged with zeit-pkg aware of full filesystem
我有一个节点脚本,它使用模块 commander
使用命令行参数。
我想用 pkg
打包它,但我 运行 遇到了一些麻烦。
通常我会执行我的脚本:
node index.js --file ./test.csv
但文件参数可以指向用户文件系统中的任何文件夹。
我研究过在 package.json
中为 pkg
配置 assets
和 scripts
属性,但看起来您需要在其中指定一个文件夹,例如如:
"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.
上有效
我有一个节点脚本,它使用模块 commander
使用命令行参数。
我想用 pkg
打包它,但我 运行 遇到了一些麻烦。
通常我会执行我的脚本:
node index.js --file ./test.csv
但文件参数可以指向用户文件系统中的任何文件夹。
我研究过在 package.json
中为 pkg
配置 assets
和 scripts
属性,但看起来您需要在其中指定一个文件夹,例如如:
"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.
上有效