找回密码
 立即注册
首页 业界区 业界 pnpm 10.14 支持JavaScript运行时的安装了

pnpm 10.14 支持JavaScript运行时的安装了

椎蕊 昨天 22:44
一、用corepack管理pnpm来支持运行时安装功能

在Node.js 25之前在里面集成了一个实验性的小工具:corepack,用来管理包管理器的,比如yarn、pnpm。想要支持JavaScript运行时的安装,可以先启用corepack:
corepack enable
然后指定项目所在pnpm的版本:
corepack prepare pnpm@9.15.4 --activate
接下来,安装Node.js版本:
pnpm env use --global 18
现在,pnpm 10.14 支持JavaScript运行时的安装了。
二、pnpm 10.14的支持方法

那我们在Monorepo项目中,要怎样配置呢?
具体配置步骤如下:

  • 在项目根目录的package.json中添加devEngines.runtimes,指定运行时Node.js版本的范围:
  1. // package.json
  2. {
  3.   "devEngines": {
  4.     "runtime": {
  5.       "name": "node",
  6.       "version": "^22.17.0",
  7.       "onFail": "download" // we only support the "download" value for now
  8.     }
  9.   }
  10. }
复制代码

  • 在子目录,也就是packages/app/package.json的配置是可以覆盖根目录配置的:
  1. // packages/app/package.json
  2. {
  3.   "devEngines": {
  4.     "runtime": {
  5.       "name": "node",
  6.           "version": "^18.20.8",
  7.           "onFail": "download"
  8.     }
  9.   }
  10. }
复制代码

  • 结合node的版本管理工具volta实现版本切换:
  1. {
  2.   "volta": {
  3.         "node": "18.20.8",
  4.         "pnpm: "9.15.4"
  5.   }
  6. }
复制代码
当执行pnpm install时,如果你本地的开发环境的Node.js版本比如是16.x,而与项目所需要的版本是22.17。那么,就会通过你指定的版本范围去匹配:
1.png

锁文件(lockfile)会保存运行时的版本,以及校验和(checksum)。这样,在本地运行时,也可以保证环境的一致性。
三、用Volta自动切换版本

步骤的第3步,是由Volta通过volta pin命令在package.json中生成的volta字段。当进入项目的目录时,Volta自动切换到指定版本。不用像nvm那样手动操作了。
安装 Volta

在终端输入命令:
curl https://get.volta.sh | base
就会下载安装了:
2.png

指定Node的版本

输入volta pin node@22.17.0
3.png

就会在package.json中生成volta字段:
4.png

pnpm校验devEngines版本

当执行pnpm install时,pnpm会去校验devEngines.runtime的版本,查下版本是否符合。如果符合,就会安装依赖。如果volta指定的版本低于devEngines.runtime要求的版本范围,pnpm就会警告版本不匹配。
完整的package.json配置:
  1. {
  2.   "devEngines": {
  3.     "runtime": {
  4.       "name": "node",
  5.       "version": "^22.17.0",
  6.       "onFail": "download"
  7.     }
  8.   },
  9.   "volta": {
  10.     "node": "22.17.0"
  11.   }
  12. }
复制代码
四、总结

devEngines.runtime就是检查一下环境的兼容性,然后报个警给你而已。那么执行力这块,还需要volta这个“一次配置,全自动切换”的管理运行时版本的智能工具。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册