gpt4 book ai didi

node.js - 在不使用额外的 NPM 包的情况下检查 package.json 是否在 shell 脚本中具有特定名称的脚本

转载 作者:搜寻专家 更新时间:2023-10-31 22:40:30 25 4
gpt4 key购买 nike

我正在测试一个更大的 NPM 包库,它由私有(private)包、公共(public)包的更改分支或公共(public)包的下游组成。

lib
|-package_1
|-package_2
|-package_N

所以我通过我的包 lib 运行一个 shell 脚本,它在每个目录中运行 npm test 命令。

for D in *; do
if [ -d "${D}" ]; then
echo "================================="
echo "${D}" # PRINT DIRECTORY NAME
echo "================================="

cd $D
npm run tests
cd ../ # LEAVE PACKAGE DIR
fi
done

不幸的是,在包的 JSON 文件中没有用于命名测试脚本的唯一模式。一些软件包在 test 下运行一个带有 watch-mode 的脚本,并且它们的 cli 脚本有不同的名称(主要名为 testcli)。

我想做的是类似下面的伪代码:

if has-testcli-script then
npm run testcli
else
npm run test

我现在假设只有这两个选项存在。我对了解脚本是否存在而不安装额外的全局 NPM 包的方式很感兴趣。

最佳答案

至少从 npm 版本 2.11.4 开始,调用不带参数的 npm run 将列出所有可运行的脚本。使用它你可以检查你的脚本是否存在。所以像这样:

has_testcli_script () {
[[ $(npm run | grep "^ testcli" | wc -l) > 0 ]]
}

if has_testcli_script; then
npm run testcli
else
npm test
fi

或者,直接检查您的脚本是否在 package.json 文件中:

has_testcli_script () {
[[ $(cat package.json | grep "^ \"testcli\":" | wc -l) > 0 ]]
}

关于node.js - 在不使用额外的 NPM 包的情况下检查 package.json 是否在 shell 脚本中具有特定名称的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46443338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com