升级第三方包的主版本

150 阅读1分钟

为了满足工作需求,需要对项目中使用的第三方包进行主版本的升级。

通常情况下,我们可以通过 npm 提供的 npm up 命令来升级第三方包。然而,由于项目中采用了语义版本控制,我们只需要对次要版本和补丁版本进行升级,而不必每次都连带主版本一起升级。因此,我们仍然需要遵循之前的语义版本控制规则。

既然 npm up 命令不符合我们的需求,那么就需要手动来执行升级操作。

实现原理与步骤

我们的实现步骤可以分为两个主要部分:获取包的最新版本和执行升级操作。

获取包的最新版本

首先,我们可以通过 npm outdated --json 命令来获取当前项目中需要升级的包及其最新版本。例如:

Untitled.png

执行升级操作

接下来,我们可以遍历获取到的包信息,然后使用 npm up 命令来执行升级操作。具体代码如下:

const packages = [
  {
    name: 'stylelint',
    latest: '16.3.1'
  },
  {
    name: 'unocss',
    latest: '0.58.7'
  }
];

packages.forEach(({ name, latest }) => {
  const command = `${name}@${latest}`;
  const upgradeProcess = spawn('pnpm', ['up', command], { shell: true });
  
  upgradeProcess.on('error', (err) => {
    console.error(`Error while upgrading ${name}: ${err.message}`);
  });
});

总结

通过npm outdated获取包的最新版本信息,并使用 Node.js 脚本来执行升级命令,我们可以实现自动化的升级流程。

完整代码地址