node版本与npm包的关系

现在有一个情况是这样的,package.js是一样的,
但是node版本不一样,那么下载的npm包会是一样的吗?
会不会存在这样的情况,package里面有些低版本的node不支持,而高版本支持的呢?
最近有点困扰这个问题,希望大家勿喷,谢谢

阅读 14k
2 个回答

你说的问题会有可能存在,比如早期的node版本对ES6支持不完全

还有就是很多package代码是只上传源文件,通过定义package.json的script字段在本地编译代码生成dist的,也会因为node的版本不同有些许变化,但是好的开源库基本上都能做到兼容

另外就是不同版本的node初始默认安装的npm版本也会有不同,比如2.x和3.x在npm包管理上面的方式就有很大区别

还有就是关于npm安装的包的版本的问题,如果一个版本号是 ^1.0.0 这样写的,那么npm会去在大版本确定的情况下尽可能的去找比较新的版本安装,如果该包的作者做了不兼容的升级也会造成两边代码不一样的情况,facebook的yarn(npm的代替品)当初在设计的时候也有考虑到这种情况,并且做了相应优化使用

在package.json里面存在一个 engines 的字段,用来指定node版本,这样就能够很明显的指出我的package里面的代码对node版本的支持情况

package.json

楼主可以看一下这个链接去了解下package.json里面的主要几个字段是干什么用的,这样对学习node会更有帮助

你本地 node 的版本不影响你用 npm 安装的包的版本。有些包要求 node 满足一定版本以上的情况是可能存在的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题