我的目标是只安装此npm包,如果它尚未提供。即使我已在全球范围内安装模块,这仍将继续执行。
if [ npm list -g widdershins &> /dev/null ] || [ ! -d node_modules ]; then
npm install widdershins --no-shrinkwrap
fi
如何调整此项以检测它何时全局安装?
答案 0 :(得分:2)
如果您想要一支班轮:
本地
npm list | grep widdershins || npm install widdershins --no-shrinkwrap
全局:
npm list -g | grep widdershins || npm install -g widdershins --no-shrinkwrap
答案 1 :(得分:1)
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
检查给定的参数是否是目录(如果是,则返回true)!
是否定运算符,在我们的例子中是否定-d result -o
是逻辑或运算符总结一下:
This也可以帮到你。