npm是否跟踪包的兼容性?

时间:2018-02-25 12:32:52

标签: npm

如果我有一个旧版本的节点(例如从Ubuntu repos下载),并且我使用sudo npm install @angular/cli -g,那么是否会下载已知使用该版本的@angular/cli的最新版本节点,或者总是安装最新版本的@angular/cli,即使该版本与我的节点版本不兼容?

我问,因为我encountered a problem让我觉得第二种变体就是发生了什么。但与此同时,我对像apt-get这样的软件包管理员的体验让我相信他们通常会确保安装兼容版本 - apt-get如果您的发行版不会安装Ubuntu 17.10.1的软件包例如,Ubuntu 16.04.3 LTS

所以我很想知道npm在这方面是否更像apt-get

1 个答案:

答案 0 :(得分:1)

npm在这方面的行为不像apt get,如果你运行Observable.range(1, 6) .groupBy(n => n % 2 === 0) .concatMap(obs => obs) .subscribe((n) => console.log(n), null, () => console.log('complete concatMap')) // this is the output 1 - 3 - 5 - complete concatMap ,npm将从注册表下载该软件包的最新版本,无论你安装了哪个Node版本。

我们可以使用@ angular / cli示例来测试它。可以在project's homepage上阅读:

  

CLI和生成的项目都具有需要节点6.9.0或更高版本以及NPM 3或更高版本的依赖项。

因此,如果我将我的Node版本降级到最终的5.x版本:

npm install -g <package>

然后运行$ nvm install 5.12.0 Downloading and installing node v5.12.0... Downloading https://nodejs.org/dist/v5.12.0/node-v5.12.0-linux-x64.tar.xz... ######################################################################## 100,0% Computing checksum with sha256sum Checksums matched! Now using node v5.12.0 (npm v3.8.6) ,您可以看到npm不关心我正在运行的Node版本:

npm install @angular/cli -g

作为旁注,您可能希望使用Node版本管理器,因为这意味着您不需要使用sudo运行$ npm ls -g --depth=0 /home/jack/.nvm/versions/node/v5.12.0/lib ├── @angular/cli@1.7.1 └── npm@3.8.6 。如果您有兴趣,这是good guide。这与最近的npm shenanigans(参考:Unlucky Linux boxes trampled by NPM code update, patch zapped

有关