是否只有在尚未安装 npm 包时才可以安装它?
Is it possible to install npm package only if it has not been already installed?
是否可以仅在 npm
包尚未安装的情况下安装它?
我需要这个来加速 CircleCI 的测试,但是当我 运行 npm install protractor@2.1.0
等时,它总是从 scracth 下载东西并安装它们,但是,node_modules
文件夹包含所有运行ning 命令(从以前的构建中缓存)和 protractor --version
等显示了所需的包版本。
拥有像这样的单行命令是完美的:
protractor --version || npm install -g protractor@2.1.0
但是那个也会检查包的版本。
用bash你可以做到
[ $(node -p "require('protractor/package.json').version") != "2.1.0" ] && npm install protractor@2.1.0
优秀的功能版:
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
我遇到了同样的问题,我想从任何需要它们的 "package.json" 文件安装全局依赖项。
这适用于 Windows 开发环境。
Here is my solution.
[ $(node -p "try{require('protractor/package.json').version}catch(e){}") != "2.1.0" ] && npm install grunt
你可以试试npm list protractor || npm install protractor@2.1.0
其中 npm list protractor
用于查找 protractor
包。
如果没有找到包,会returnnpm ERR! code 1
然后npm install protractor@2.1.0
安装
是否可以仅在 npm
包尚未安装的情况下安装它?
我需要这个来加速 CircleCI 的测试,但是当我 运行 npm install protractor@2.1.0
等时,它总是从 scracth 下载东西并安装它们,但是,node_modules
文件夹包含所有运行ning 命令(从以前的构建中缓存)和 protractor --version
等显示了所需的包版本。
拥有像这样的单行命令是完美的:
protractor --version || npm install -g protractor@2.1.0
但是那个也会检查包的版本。
用bash你可以做到
[ $(node -p "require('protractor/package.json').version") != "2.1.0" ] && npm install protractor@2.1.0
优秀的功能版
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
我遇到了同样的问题,我想从任何需要它们的 "package.json" 文件安装全局依赖项。
这适用于 Windows 开发环境。
Here is my solution.
[ $(node -p "try{require('protractor/package.json').version}catch(e){}") != "2.1.0" ] && npm install grunt
你可以试试npm list protractor || npm install protractor@2.1.0
其中 npm list protractor
用于查找 protractor
包。
如果没有找到包,会returnnpm ERR! code 1
然后npm install protractor@2.1.0
安装