web-dev-qa-db-ja.com

npmパッケージは、まだインストールされていない場合にのみインストールできますか?

npmパッケージは、まだインストールされていない場合にのみインストールできますか?

CircleCIでのテストを高速化するためにこれが必要ですが、npm install [email protected]など。常にダウンロードし、scracthからインストールしますが、node_modulesすべてのモジュールを含むフォルダーは、コマンド(以前のビルドからキャッシュされた)の実行時に既に存在し、protractor --versionなどは、必要なパッケージのバージョンを示しています。

次のような1行のコマンドを使用するのに最適です。

protractor --version || npm install -g [email protected]

しかし、パッケージのバージョンもチェックするもの。

26
kovpack

bashでできること

[ $(node -p "require('protractor/package.json').version") != "2.1.0" ] && npm install [email protected]
21
Jerome WAGNER

npm list protractor || npm install [email protected]を試すことができます

npm list protractorprotractorパッケージの検索に使用されます。

パッケージが見つからない場合、npm ERR! code 1を返し、インストールのためにnpm install [email protected]を実行します

15
An Nguyen

優れた機能バージョン @ 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 "[email protected]" install "[email protected]$v"
}

次のように使用します:

$ install_package_if_needed protractor 2.1.0

npmに追加のオプションを渡すには、次のようにバージョンの後にオプションを指定します。

$ install_package_if_needed protractor 2.1.0 -g
9
bishop
[ $(node -p "try{require('protractor/package.json').version}catch(e){}") != "2.1.0" ]  && npm install grunt
2
theJC

グローバルな依存関係を必要とする「package.json」ファイルからインストールしたいという問題と同じ問題がありました。

これは、Windows開発環境用です。

これが私の解決策です

0
sthames42