[英]How to determine if npm module installed in bash
我的目标是仅在 npm package 不可用的情况下安装它。 即使我已经全局安装了模块,这也会继续执行。
if [ npm list -g widdershins &> /dev/null ] || [ ! -d node_modules ]; then
npm install widdershins --no-shrinkwrap
fi
如何调整它以检测它何时安装在全局范围内?
如果你想要一个班轮:
当地的
npm list | grep widdershins || npm install widdershins --no-shrinkwrap
全球的:
npm list -g | grep widdershins || npm install -g widdershins --no-shrinkwrap
package='widdershins'
if [ `npm list -g | grep -c $package` -eq 0 ]; then
npm install $package --no-shrinkwrap
fi
替代方法包括目录检查:
package='widdershins'
if [ `npm list -g | grep -c $package` -eq 0 -o ! -d node_module ]; then
npm install $package --no-shrinkwrap
fi
解释:
npm list -g
列出所有已安装的包grep -c $package
打印包含 $package 的行数(在我们的例子中替换为 'widdershins')-eq
是一个相等检查,例如,如果 $a 等于 $b,则$a -eq $b
返回 true,否则返回 false。-d
检查给定参数是否为目录(如果是则返回真)!
是否定运算符,在我们的例子中是否定 -d 结果-o
是逻辑或运算符把它们加起来:
这也可以帮助你。
这对我有用:
package_name='widdershins'
if [[ "$(npm list -g $package_name)" =~ "empty" ]]; then
echo "Installing $package_name ..."
npm install -g $package_name
else
echo "$package_name is already installed"
fi
npm list -g package-name
未安装时返回空,因此您可以检查它是否包含字符串空
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.