在使用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)
2条答案
按热度按时间cclgggtu1#
您需要使用
bash
执行该命令,以使用其文件名通配符扩展名。z18hc3ub2#
npm默认使用
/bin/sh
来执行脚本,与bash或zsh(您可能在命令行中使用它们)不同,sh
不理解**
。您可以使用以下命令更改npm使用的shell: