如何升级Node文件中的特定软件包?

问题描述 投票:0回答:1

我有一个具有以下结构的Node项目:

.
├── index.js
├── package.json
├── updater.js
└── yarn.lock

我在此项目中使用Yarn

内部文件:package.json中有对包的引用:@emotion/core@^10.0.22,如下所示:

{
  "name": "my-project",
  ...
  "dependencies": {
    ...
    "@emotion/core": "^10.0.22",
    ...
  }
  ...
}

我需要的是:

[从内部文件:updater.js文件,将软件包:@emotion/core升级到版本:^10.0.27(以防万一,请记住我正在使用Yarn),所以我可以这样做:

$ node updater.js

从命令行,我可以很容易地做到这一点:

$ yarn upgrade @emotion/core@^10.0.27

但是我需要从文件内部执行此操作:updater.js(这是必需的)。这是最大问题的简化(因此,即使没有用,我也需要满足此虚拟用例的要求)。

此代码将放在自定义软件包中,该软件包将负责安装其他软件包。

提前感谢!

javascript node.js npm node-modules npm-scripts
1个回答
0
投票

最简单的方法是使用child_process执行任何脚本:

const { exec } = require('child_process');

 const childProcess = exec('yarn upgrade @emotion/core@^10.0.27', (error, stdout, stderr) => {
     console.log('stdout: ' + stdout);
     console.log('stderr: ' + stderr);
     if (error !== null) {
          console.log('exec error: ' + error);
     }
 });

您可以在node.js document page处查看更多信息>

您可以通过执行以下操作来传递stdio以获得接近实时的输出:

node.js document page

但是要小心使用childProcess.stdout.pipe(process.stdout) 库,应该尽可能使用*sync块代码。最好使用NOT或将其设为callback

[还有Promise之类的出色软件包可以对此进行封装。

© www.soinside.com 2019 - 2024. All rights reserved.