NodeJS Regex命令行参数更改节点和npm脚本之间的值

bwleehnv  于 2023-02-18  发布在  Node.js
关注(0)|答案(2)|浏览(186)

在使用node.js时,我偶然发现了一个无法解释的命令行参数行为:
我有一个程序,它使用正则表达式来检测测试文件。这个正则表达式是通过命令行参数传递的:

node index.js --require src/**/*.js

当我这样做的时候,我得到了我所想象的。让我们假设我在src文件夹中检测到了以下文件(我用一个简单的**console.log(process.argv)**记录):

a.js
b.js
shared/c.js
shared/d.js

现在,如果我配置一个启动相同命令的npm脚本:

"test": "node index.js --require src/**/*.js

并启动它:

npm test

结果是:

a.js
b.js

有人能解释一下为什么会这样吗😅?谢谢
我创建了一个mini repo,以便为感兴趣的用户重现(我运行节点16.19.0)

cclgggtu

cclgggtu1#

您需要使用bash执行该命令,以使用其文件名通配符扩展名。

"test": "bash -c 'node index.js --require src/**/*.js'"
z18hc3ub

z18hc3ub2#

npm默认使用/bin/sh来执行脚本,与bash或zsh(您可能在命令行中使用它们)不同,sh不理解**
您可以使用以下命令更改npm使用的shell:

npm config set script-shell bash

相关问题