You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Lerna add命令将package.json依赖版本设为*

解决Lerna添加本地工具包时版本自动锁定的问题

问题背景

在组件仓库的自动化脚本里,用npx lerna add --dev LOCAL_TOOLS_PACKAGE --scope=${newComponentPackageName}给新组件的package.json加开发依赖,想要把版本设为"*"来自动使用最新版,但实际总是生成带^前缀的具体版本(比如^3.4.1)。

解决办法

1. 直接修改package.json文件

绕开Lerna的版本推断逻辑,执行完lerna add后用脚本修改目标文件:

  • Node.js脚本写法:
const fs = require('fs');
const path = require('path');

const pkgPath = path.resolve(`packages/${newComponentPackageName}/package.json`);
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));

if (pkg.devDependencies?.LOCAL_TOOLS_PACKAGE) {
  pkg.devDependencies.LOCAL_TOOLS_PACKAGE = '*';
  fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2));
}
  • Unix-like环境用sed命令:
sed -i '' 's/"LOCAL_TOOLS_PACKAGE": "[^"]*"/"LOCAL_TOOLS_PACKAGE": "*"/' packages/${newComponentPackageName}/package.json

2. 指定版本参数执行Lerna命令

直接在lerna add里指定版本为*,部分Lerna版本支持这种写法:

npx lerna add --dev LOCAL_TOOLS_PACKAGE@* --scope=${newComponentPackageName}

如果还是不行,先开启exact模式去掉^前缀,再配合脚本修改版本:
在lerna.json中添加配置:

{
  "command": {
    "add": {
      "exact": true
    }
  }
}

3. 用npm代替Lerna添加依赖

直接切换到目标组件目录下用npm安装,强制版本设为*:

cd packages/${newComponentPackageName} && npm install --save-dev LOCAL_TOOLS_PACKAGE@*

内容的提问来源于stack exchange,提问作者Mad Bernard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 16:27:11