包管理工具
npm
bashnpm install -g npm npm list -g --depth=0
yarn
bashnpm install -g yarn yarn global upgrade yarn yarn add react yarn add react -D yarn global add react
pnpm
bashnpm install -g pnpm
npm源关联
npm
npm get registry
查看源npm --registry registry.npm.taobao.org install any-touch
临时修改npm config set registry registry.npm.taobao.org
持久使用npm config set registry registry.npmjs.org
还原npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass
设置node-sass镜像
yarn
yarn config get registry
查看源yarn add any-touch@latest --registry=registry.npmjs.org/
临时修改yarn config set registry registry.npm.taobao.org/
持久修改yarn config set sass_binary_site https://npm.taobao.org/mirrors/node-sass
设置node-sass镜像
pnpm
pnpm get registry
查看源pnpm --registry registry.npm.taobao.org install any-touch
临时修改pnpm config set registry registry.npm.taobao.org
持久使用pnpm config set registry registry.npmjs.org
还原
工具切换
常用命令
npm | yarn | 功能 |
---|---|---|
npm install | yarn | 安装全部依赖 |
npm install react --save | yarn add react | |
npm uninstall react --save | yarn remove react | 移除依赖 |
npm install react --save-dev | yarn add react --dev | |
npm update --save | yarn upgrade | |
npm install react --global | yarn global add react | |
npm list -g --depth 0 | yarn global list --depth=0 | 查看全局安装的包 |
npm全局包路径修改
bashnpm config get prefix npm config set prefix "/usr/local/Cellar/node@12/12.21.0_1"
设置代理
bashnpm config set proxy http://127.0.0.1:6152 npm config set https-proxy http://127.0.0.1:6152 yarn config set proxy http://127.0.0.1:6152 yarn confit set https-proxy http://127.0.0.1:6152 npm config delete proxy npm config delete https-proxy yarn config delete proxy yarn config delete https-proxy
更新项目依赖
bash#yarn更新依赖 yarn upgrade-interactive --lates #更新所有依赖 npm update #执行以下命令不应有输出 npm outdated
更新npm
Monorepo支持
package.json
- dependencies
- devDependencies
- peerDependencies
这三个字段在我们的业务项目中是没有什么区别的,主要区别是在开发npm包时候和node应用
dependencies
项目依赖,比如
react
devDependencies
开发依赖,比如
eslint
peerDependencies
peerDependencies 主要用于依赖包中,表示安装该包时还需要安装哪些包
版本号
- ^主版本号不会变,另外两个版本号会更新到最新
- ~主版本和次要版本不会变,最后一个版本号会更新到最新
- 啥也没有:固定版本,不会更新
npm install发生了什么
主要步骤如下
- 检查配置。包括项目级、用户级、全局级、内置的 .npmrc 文件。
- 确定依赖版本,构建依赖树。确定项目依赖版本有两个来源,一是 package.json 文件,一是 lockfile 文件,两个确认版本、构建依赖树的来源,互不可少、相辅相成。如果 package-lock.json 文件存在且符合 package.json 声明的的情况下,直接读取;否则重新确认依赖的版本。
- 下载包资源。下载前先确认本地是否存在匹配的缓存版本,如果有就直接使用缓存文件,如果没有就下载并添加到缓存,然后将包按依赖树解压到 node_modules 目录。
- 生成 lockfile 文件。
- 构建依赖树的过程中,版本确认需要结合 package.json 和 package-lock.json 两个文件。先确认 package-lock.json 安装版本,符合规则就以此为准,否则由 package.json 声明的版本范围重新确认。特别地,若是在开发中手动更改包信息,会导致 lockfile 版本信息异常,也可能由 package.json 确认。确认好的依赖树会存到 package-lock.json 文件中,这里跟 yarn.lock 存在差异。
- 同一个依赖,更高版本的包会安装到顶层目录,即 node_modules 目录;否则会分散在某些依赖的 node_modules 目录,如:node_modules/expect-jsx/node_modules/react 目录。
- 如果依赖升级,造成版本不兼容,需要多版本共存,那么仍然是将高版本安装到顶层,低版本分散到各级目录。
- lockfile 的存在,保证了项目依赖结构的确定性,保障了项目在多环境运行的稳定性。