原淘宝镜像地址 http://npm.taobao.org和 http://registry.npm.taobao.org 将在 2022.06.30 号正式下线和停止 DNS 解析,新域名为 npmmirror.com,下方代码请自己手动替换修改
// 清除缓存
npm cache clean --force
// 查看npm源地址(不单独做配置时的默认源)
npm config get registry
// 查看缓存地址
npm config get cache
// 查看当前npm配置(可以查看某些包当前使用的源,node版本等)
npm config get
// 设置npm默认源为淘宝镜像
npm config set registry https://registry.npm.taobao.org
// 安装某个包时使用淘宝镜像(方式一)
npm config set xxx "https://npm.taobao.org/mirrors/xxx"
// 例如
npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/
npm config set sharp_binary_host "https://npm.taobao.org/mirrors/sharp"
npm config set sharp_libvips_binary_host "https://npm.taobao.org/mirrors/sharp-libvips"
// 安装某个包时使用淘宝镜像(方式二)
npm_config_sass_binary_site=https://npm.taobao.org/mirrors/node-sass
npm_config_sharp_binary_host="https://npm.taobao.org/mirrors/sharp"
npm_config_sharp_libvips_binary_host="https://npm.taobao.org/mirrors/sharp-libvips"
// 该次安装某个包时使用淘宝镜像
npm i node-sass --sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
npm ci
npm ci
命令适合放在持续集成中(测试平台,项目部署),特点如下:
- 拥有和 npm install 兼容的 API
- package-lock.json 在 npm ci 时是必须存在的,否则将会报错
- npm ci一次只能安装整个项目,不能使用此命令添加单个依赖项
- 安装开始前,删除原有node_modules文件夹
- 不会重写更新package.json和package-lock,json,既不会更新依赖项版本
package-lock.json 用于锁住 package 的版本号,避免在生产环境中因版本导致的构建错误或者运行时错误,对于前端工程化也意义非凡。npm ci 时 package-lock.json 必须存在也避免了此类问题的产生,它对项目的安全性有所提高。
查看某个npm包的信息
查看某个包的依赖项,多少个版本,协议,最近版本号等信息(以webpack举例)
npm info webpack
查看某个包的所有版本
npm view webpack versions
查看某个包最新版本(注意,没有s)
npm view webpack version
安装指定版本的包(如1.0.0版本)
npm install xxx@1.0.0
安装最新版本的包
npm install xxx@latest
查看本地是否全局安装某个包,以及包版本
npm ls xxx -g
查看本地全局安装的所有包
npm ls -g // 会返回所有的包,包括该包的依赖,比较难以查看,特殊情况会用到
npm list -g --depth 0 // 返回全局安装的包,不显示其依赖包
npm install xxx --save与–save-dev区别
--save或不写参数或-S,都是默认将包加入package.json的dependencies
--save-dev或-D,是将包加入package.json的devDependencies
至于将包安装在dependencies和devDependencies的区别,请参考
dependencies与devDependencies区别
开了vpn代理后安装包却还是失败?因为命令行窗口并没有走代理!
安装各种npm 包的时候,经常会出现有些包被墙导致下载不下来等等各种问题,但是明明已经开了代理,且都是全局代理了,但就是下载不下来包?那是因为命令行窗口并没有走代理~
处理方法:
在git bash的命令行窗口中(支持linux命令)
export https_proxy="http://127.0.0.1:7890"
export http_proxy="http://127.0.0.1:7890"
端口号改为自己代理的端口号,该窗口的命令就会走代理了,但是是单次的,且只在当前窗口生效。如果需要全局配置,可以自己搜索下配置项