# 1. npm 常用命令

# 1.1. npm install

作用:

  • 安装依赖

问题:

  • 通过 npm install 安装依赖会导致 package-lock.json 发生变化
  • 不同人不同时间点使用 npm install 安装相同的包 也会产生不同的 package-lock.json
  • package-lock.json 又属于公共文件,多人同时更改会导致代码冲突

应用:

  • 安装未在 package.json 声明的依赖

# 1.1.1. 版本

包的版本:

语法 说明 示例
~version Approximately equivalent to version ~1.2.3 == [1.2.3, 1.3.0)
^version Compatible with version ^1.2.3 == [1.2.3, 2.0.0)
version Must match version exactly 1.2.3
>version Must be greater than version >1.2.3 == (1.2.3, ∞)
>=version greater than or equal to >=1.2.3 == [1.2.3, ∞)
<version - <1.2.3 == [0.0.0, 1.2.3)
<=version - <=1.2.3 == [0.0.0, 1.2.3]
x - 1.2.x == [1.2.0, 1.3.0)
* Matches any version * == [0.0.0, ∞)
latest Obtains latest release latest

参考:

# 1.1.2. --registry

说明:

  • 安装时指定仓库

示例:

npm i express --registry=https://registry.npm.taobao.org

# 1.2. npm ci

作用:

  • 基于 package-lock.json 安装依赖

应用:

  • 安装已在 package.json 声明的依赖
  • 也就是说,别人安装了新依赖,你拉取了 package.jsonpackage-lock.json 后,使用 npm ci 安装依赖

参考:

作用:

  • 将模块安装到全局 node_modules 中
  • 将(全局的)模块安装当前项目中

示例:

  • 全局安装

    cd
    #=> D:\dev\my-module
    
    # 在全局 node_modules 中创建符号链接(D:\dev\my-module)
    npm link
    
    # 查看全局安装的位置
    npm root -g
    #=> C:\Program Files\nodejs\node_modules
    
    # 删除
    npm uni -g my-module
    
  • 项目安装(先要全局安装)

    cd
    #=> D:\project\my-proj
    
    npm link my-module
    
    # 在当前项目的 node_modules 中创建符号链接(D:\dev\my-module)
    

参考:

# 1.4. npm view 查看包的所有版本

npm view less-loader versions 
# [
#   '0.1.0',  '0.1.1',  '0.1.2',  '0.1.3',  '0.2.0',
#   ......
#   '10.0.0', '10.0.1', '10.1.0', '10.2.0', '11.0.0',
#   '11.1.0'
# ]

# 1.5. npm pack

说明:

  • 将项目打包成 npm 包,创建一个 tarball(.tgz 文件)—— my-project-x.y.z.tgz
  • 别人可以通过 npm i my-project-x.y.z.tgz 安装

语法:

npm pack --pack-destination dist-zip

  --pack-destination dist-zip : 指定 tarball 的存放的位置,注意 dist-zip 目录要存在

示例:

  • 目录:

    D:/
      flowchart-editor/
      proj/
    
  • 命令:

    cd flowchart-editor
    
    npm pack --pack-destination dist-zip
    
    
    copy dist-zip/flowchart-editor-1.0.3.tgz ../proj/libs
    
    cd ../proj
    
    npm i ./libs/flowchart-editor-1.0.3.tgz
    
    npm uni flowchart-editor
    

参考:

# 1.6. npm update

说明:

  • 更新依赖的版本

示例:

# 按照版本规则,更新指定依赖
npm update jquery

# 更新所有的依赖
npm update

# 1.7. npm version

说明:

  • 版本号格式: major.minor.patch (主版本号.次版本号.修订号)
  • 示例: 1.2.3

升级版本号:

# 升级主版本号
npm version major

# 升级次版本号
npm version minor

# 升级修订号
npm version patch

注意:

  • 执行 npm version 指令会修改 package.json 中 version

# 1.8. npm cache

说明:

  • 缓存相关

示例:

# 查看本机缓存目录
npm config get cache

## C:\Users\wuqinfei\AppData\Roaming\npm-cache


# 清空缓存 (删除 C:\Users\wuqinfei\AppData\Roaming\npm-cache\_cacache 目录)
npm cache clean -f

# 1.9. npm ls

说明:

  • 查看本地包的(版本)信息

示例:

W:\proj\11-image-control\code\image-control>npm ls typescript   

@ma/image-control@1.0.0 W:\proj\11-image-control\code\image-control
+-- @ma/ma-js-api@1.0.0 -> .\..\ma-js-api
| +-- @typescript-eslint/eslint-plugin@6.15.0
| | `-- ts-api-utils@1.0.3
| |   `-- typescript@5.3.3 deduped
| +-- postcss-loader@7.3.3
| | `-- cosmiconfig@8.3.6
| |   `-- typescript@5.3.3 deduped
| +-- ts-loader@9.5.1
| | `-- typescript@5.3.3 deduped
| `-- typescript@5.3.3
+-- @ma/ma-proxy@1.0.0 -> .\..\ma-proxy
| `-- typescript@5.3.3
+-- @typescript-eslint/eslint-plugin@6.15.0
| `-- ts-api-utils@1.0.3
|   `-- typescript@5.3.3 deduped
+-- postcss-loader@7.3.3
| `-- cosmiconfig@8.3.6
|   `-- typescript@5.3.3 deduped
+-- ts-loader@9.5.1
| `-- typescript@5.3.3 deduped
`-- typescript@5.3.3

参考:

# 1.10. npm root

# 查询 Node.js 的安装目录
npm root -g
本章目录