npm
パッケージは、まだインストールされていない場合にのみインストールできますか?
CircleCIでのテストを高速化するためにこれが必要ですが、npm install [email protected]
など。常にダウンロードし、scracthからインストールしますが、node_modules
すべてのモジュールを含むフォルダーは、コマンド(以前のビルドからキャッシュされた)の実行時に既に存在し、protractor --version
などは、必要なパッケージのバージョンを示しています。
次のような1行のコマンドを使用するのに最適です。
protractor --version || npm install -g [email protected]
しかし、パッケージのバージョンもチェックするもの。
bashでできること
[ $(node -p "require('protractor/package.json').version") != "2.1.0" ] && npm install [email protected]
npm list protractor || npm install [email protected]
を試すことができます
npm list protractor
はprotractor
パッケージの検索に使用されます。
パッケージが見つからない場合、npm ERR! code 1
を返し、インストールのためにnpm install [email protected]
を実行します
優れた機能バージョン @ JeromeWAGNERによる回答 :
function install_package_if_needed() {
local p=${1:-Package required}
local v=${2:-Version required}
shift 2
local i=$(node -p "require('$p/package.json').version" 2>/dev/null)
[ "$i" == "$v" ] || npm "$@" install "$p@$v"
}
次のように使用します:
$ install_package_if_needed protractor 2.1.0
npm
に追加のオプションを渡すには、次のようにバージョンの後にオプションを指定します。
$ install_package_if_needed protractor 2.1.0 -g
[ $(node -p "try{require('protractor/package.json').version}catch(e){}") != "2.1.0" ] && npm install grunt