yarn
早期的npm 安装依赖速度慢,依赖管理混乱,所以提出了yarn yarn通过缓存和生产package.json 文件这些方式来加快安装速度,依赖管理清晰。 在npm5之后,npm 也借鉴了yarn的思想,现在两个已经性能相当
所以当有人问起yarn 和npm 的区别时,就可以说上面的话术,展开说说缓存策略和依赖管理方式。 为了降低学习成本,所以两者命令上区别不大,
cnpm
概述
很多时候,我们下载一些依赖包的时候,从地址registry.npmjs.org 拉取用资源,会安装失败 所以淘宝维护了一套淘宝源的镜像仓库,定时从registry.npmjs.org 去拉取最新包,便于国内开发下载
常用指令
查看npm镜像:
npm config get registry
我们可以直接设置npm的镜像
npm config set registry https://registry.npm.taobao.org
当我们想和原来的npm 区分开时,也不想修改原有npm源时,建议使用cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org cnpm config get registry
返回 r.npm.taobao.org/ 则安装成功
npx工具
概述
npx是npm5.2之后自带的一个命令,一般用于它来调用项目中的某个模块
问题产生
我们以webpack为例: 全局安装的是webpack5 项目安装的是webpack3 如果我在终端执行 webpack --version使用的是哪一个命令呢?
显示结果会是 webpack5,事实上使用的是全局的,为什么呢?
原因非常简单,在当前目录下找不到webpack时,就会去全局找,并且执行命令;
那么我想使用 局部的webpack版本,该怎么办呢
解决方案
- 方式一:在终端中使用如下命令(在项目根目录下) ./node_modules/.bin/webpack --version
- 方式二:修改package.json中的scripts
"scripts": { "webpack": "webpack --version"
- 方式三:使用npx npx webpack --version npx的原理非常简单,它会到当前目录的node_modules/.bin目录下查找对应的命令;
npm发布自己的包
- 注册npm账号:
- www.npmjs.com/
- 选择sign up
- 在命令行登录: npm login
- 修改package.json
- 发布到npm registry上 :npm publish
- 更新仓库:
- 修改版本号(最好符合semver规范)
- 重新发布
- 删除发布的包: npm unpublish
- 让发布的包过期: npm deprecate
总结
以npm为切入点,展开说了npm 的属性和原理,方便大家理解,也简单介绍了其他包管理工具和npm 比较相似的一些指令,希望能对大家有所帮助。
现在前端最火的应该是pnpm,我在下篇文章会和大家分享,敬请期待