Nodejs的npm是什么, 作用是什么, 怎么实现的, 优势是什么, 劣势是什么
npm是什么, 作用是什么, 怎么实现的
npm 是 JavaScript世界的包管理工具, 并且是 Node.js平台的默认包管理工具。通过 npm可以安装、共享、分发代码,管理项目依赖关系。这句看着是不是很高大上, 瞬间不淡定了, 觉得进入了黑匣子!?醍醐灌顶开始了…
重点:
1、npm是使用Javascript(运行在Node.js)写的, 全称是Node Package Manager。
运行npm命令本质上就是执行node ./bin/npm-cli.js
2、npm是开源的, 开源的, 开源的, 源码:https://github.com/npm/cli
源码在手, 天下我有。是不是不慌了, 原来node的包管理工具是开源项目, 只要愿意立刻就能调试它, 修改它, 蹂躏它。
在开发蜂巢浏览器(NestBrowser)的中期, 都有去git一下npm的源码翻了一下。
Good good study, day day up!
实现方法:
1、在https://www.npmjs.com/服务器作为代码仓库(registry), 里面可以存放愿意共享的代码
2、部分开发者把自己写好的代码上传到代码仓库。例如jQuery、Bootstrap、Underscore作者使 用npm publish将代码提交到registry上面, 取名为jquery、bootstrap和underscore(此时名称是小写)
3、其他开发者使用npm search查找共享项目发现有自己需要的功能模块就不需要重复造轮子, 运行npm install jquery bootstrap underscore, 此时npm会下载代码
4、npm下载完的代码就出现在node_modules的目录里面, 此时可以随意使用
npm优势是什么, 劣势是什么
优势: 1、统一了入口, 通过npm命令下载第三方包, 实现代码的共享, 下载的第三方包会在node_modules中。无需再去对应网站下载js文件。
劣势: 1、当第三方包所需依赖过大时, 需要安装的包的数量也是巨大的。由于第三方包属于同级关系, 所需要下载的第三方包不利于查看。 2、npm install的时候速度很慢。特别是新的项目拉下来要等半天, 删除node_modules, 重新install的时候依旧如此。 3、同一个项目, 安装的时候无法保持一致性。由于package.json文件中版本号的特点, 下面三个版本号在安装的时候代表不同的含义。 -"5.0.3" : 表示安装指定的5.0.3版本; -"~5.0.3" :表示安装5.0.x中最新的版本; -"^5.0.3" :表示安装5.X.X中最新的版本, 4、安装的时候, 包会在同一时间下载和安装, 中途某个时候, 一个包抛出错误, 但是npm会继续下载和安装包。因为npm会把所有日志输出到终端, 有关错误包的信息就会在一大堆npm打印的警告中丢失掉, 并且你不会注意到实际发生的错误。
蜂巢浏览器(NestBrowser)开始都尝试过只使用npm, 后面都转而使用yarn了。关于yarn就另起一篇文章了, 待续…