kov*_*ack 28 bash node.js npm circleci
是否可以npm仅在尚未安装包的情况下安装包?
我需要这个以加速对CircleCI的测试,但是当我运行npm install protractor@2.1.0等时它总是下载并从scracth安装它们,但是,node_modules在运行命令(从先前构建缓存)protractor --version等时,所有模块的文件夹已经存在.显示所需的软件包版本.
它是完美的有这样的一行命令:
protractor --version || npm install -g protractor@2.1.0
Run Code Online (Sandbox Code Playgroud)
但是那个也会检查包版本的那个.
Jer*_*NER 21
用bash你可以做到
[ $(node -p "require('protractor/package.json').version") != "2.1.0" ] && npm install protractor@2.1.0
Run Code Online (Sandbox Code Playgroud)
An *_*yen 16
你可以试试 npm list protractor || npm install protractor@2.1.0
凡npm list protractor用于查找protractor包.
如果找不到包,它将返回npm ERR! code 1并npm install protractor@2.1.0安装
@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"
}
Run Code Online (Sandbox Code Playgroud)
使用如下:
$ install_package_if_needed protractor 2.1.0
Run Code Online (Sandbox Code Playgroud)
要传递其他选项npm,请在版本之后指定它们,如下所示:
$ install_package_if_needed protractor 2.1.0 -g
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15662 次 |
| 最近记录: |