如果我有一个旧版本的节点(例如从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
。
答案 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)