首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >纱线安装-如何强制使用最新的小版本和节点补丁(10.x.x)

纱线安装-如何强制使用最新的小版本和节点补丁(10.x.x)
EN

Stack Overflow用户
提问于 2020-09-04 10:42:58
回答 2查看 2.8K关注 0票数 3

我有一个节点应用程序,在节点10上进行测试。我使用纱线作为依赖管理器。由于我的应用程序测试是在CI上使用节点10的最新版本运行的,所以在运行任何纱线命令时,我希望确保所有开发人员都安装了最新的10.x.x版本。

例如,假设当前的最新节点版本为10.22.1,那么如果开发人员在10.22.0或10.11.1上,我希望停止纱线安装。

发动机中使用package.json指令,我尝试了以下语法,但没有效果。

代码语言:javascript
复制
{
  "engines": {
    "node": "^10.x.x",
  }
}
代码语言:javascript
复制
{
  "engines": {
    "node": "^10",
  }
}
代码语言:javascript
复制
{
  "engines": {
    "node": ">10.0.0 <11.0.0",
  }
}
代码语言:javascript
复制
{
  "engines": {
    "node": "10",
  }
}

所有这些都允许具有主要版本10的任何节点。

EN

回答 2

Stack Overflow用户

发布于 2020-09-08 03:48:35

根据纱线文档(https://classic.yarnpkg.com/en/docs/package-json/),在安装包之前调用preinstall

如果定义了预安装脚本,则在安装包之前由纱线调用预安装脚本。

所以我会在你的package.json里做这样的事情:

代码语言:javascript
复制
"scripts": {
....
    "preinstall": "./scripts/preinstall.sh",
    
  }

您的preinstall.sh可能是:

代码语言:javascript
复制
#!/bin/bash
currentver="$(node -v)"
requiredver="v10.0.0"

if [ "$(printf '%s\n' "$requiredver" "$currentver" | sort -V | head -n1)" = "$requiredver" ]; then 
        echo "Version is good so let's go with install"
else
        echo "Please install the node version greater than v10.0.0"
        exit -1
fi

因此,如果您的开发人员的版本小于10.0.0,那么上面的脚本将失败,而yarn install命令也会失败。

注意:对于版本比较的shell脚本,请归功于https://unix.stackexchange.com/questions/285924/how-to-compare-a-programs-version-in-a-shell-script

票数 0
EN

Stack Overflow用户

发布于 2020-09-14 12:22:54

正如我们在npm博士中所做的那样:

若要指定最多1.0.4的可接受版本范围,请使用以下语法:

  • 补丁发布: 1.0或1.0.x或~1.0.4
  • 次要版本:1或1.x或^1.0.4
  • 主要版本:*或x

因此,如果您只想要10.22.1版本或更新版本,应该使用~10.22.1或^10.22.1。

另外一种方法是使用确切的版本(您可以从此链接了解更多关于它的信息),如:

代码语言:javascript
复制
{
  "engines": {
    "node": "10.22.1",
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63739597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档