我正试图创建一个全局节点包,用于在该包的运行目录下做一些事情.例如,我想用该节点包CLI删除一些文件。命令是这样的。
my-package ./test-file.txt
我怎么才能得到 ./test-file.txt
路径作为包节点应用的一个参数吗?我认为它应该在参数中,但如果有更好的方法,我会很感激知道。
通常情况下 process.argv
是用来读取参数的。
例如,下面的例子将参数分配到索引处。
下面的例子将参数分配到索引 2
到 filepath
变量。
const [ , , filepath ] = process.argv;
下面的示例将所有参数从index 2
至 args
变量作为一个数组。
const [ , , ...args ] = process.argv;
注意事项 读取的参数由 process.argv
在指数 0
和 1
分别是典型的node.js可执行路径和JS文件路径--因此,在上述例子中,我们跳过它们,当 重构 阵列,使用 , ,
.
根据上位者随后的评论,"我怎么才能得到那个文件的完整路径?
"我怎样才能得到那个文件的完整路径?" 用户会发送一些类似于:
./test.txt
到应用程序。如何获得文件的[绝对]路径?"
首先,下面假设你正在使用node.js构建一个命令行工具--因为这就是你的问题所暗示的。在这种情况下,考虑利用 path.resolve()
递进 process.cwd()
和 filepath
变量。
例如
cli.js
#! /usr/bin/env node
const { resolve } = require('path');
// 1. Obtain the relative path argument provided via
// the CLI and assign it to the `filename` variable.
const [ , , filepath ] = process.argv;
// 2. Obtain the absolute path for the given relative
// path and assign it to the `absPath` variable.
const absPath = resolve(process.cwd(), filepath);
然后在 软件包.json 的全局节点包,你必须确保你已经定义了你的 bin
这样的属性。
package.json
{
...
"bin": {
"my-package": "./cli.js"
},
...
}
请看 npm博客 以了解更多详情。