摘录&心得
问与答
1、出现依赖问题时,删除node_modules然后重新npm install就可以了,原理是什么?会出问题么?
答:原理是会重新按照一套靠谱的规则安装版本,详见工作机制。出问题未知?
npm
npm(node package manager),是包管理工具,不是语言
工作机制
- 依赖的安装按照扁平化原则,放在node_modules的根目录下
由于存在根据npm版本决定包的情况,团队中的npm版本要保持一致。
缓存机制
npm下载依赖时,会先缓存到本地,再解压到node_modules中
安装依赖时,会根据lock文件中存储的 integrity、version、name 信息生成一个唯一的 key,对应缓存。
npm link
如何验证公共组件的正确性?
- 在组件库开发中,设计 examples 目录或者一个 playground,启动一个开发服务。
- 使用npm link在本地调试未发布的外部包
npm link可以将模块链接到对应的业务项目中运行
传统npm全局安装依赖的方案很僵硬,总觉得电脑硬盘被占满了。
- npx可以直接执行 node_modules/.bin 文件夹下的文件。
执行模块时会优先安装依赖,在安装执行后便删除此依赖,如:
npx create-react-app cra-project
企业级部署私服原理
npm多源镜像
所谓源,其实是一个查询服务
- 在https://registry.npmjs.org/这个网址后面跟上模块名,就会得到该模块所有版本的信息。
通过npm config set可以设置安装源
- 需要安装多个安装源的项目,可以通过脚本切换
require(' child_process').exec('npm config get registry', function(error, stdout, stderr) {
if (!stdout.toString().match(/registry\.x\.com/)) {
exec('npm config set @xscope:registry https://xxx.com/npm/')
}
})
- 需要安装多个安装源的项目,可以通过脚本切换
npm下载第三方包的速度很慢
- 部署镜像后:安全、稳定
- 主要有 3 种工具来搭建 npm 私服:nexus、verdaccio 以及 cnpm
- 具体原理不是很明白,似乎可以合并npm库和私有库,可以用来微调node_modules包中代码: