[英]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.