npm

yuhuo2022-08-18JavaScriptNodeJs
参考链接

安装

默认版跟随 NodeJs 自动安装到 NodeJs / node_modules 目录中。

通过 npm install npm -g 可以安装 npm 的指定版本到全局包目录中(但也只能安装1个,全局包目录中不会存在同个包的不同版本,后安装的会覆盖前面的)。

当全局包中存在 npm,则会使用全局包中的 npm,当全局包没有 npm 时则重新用回默认版的 npm。基于此可以实现 npm 的版本切换。

-version / -ls

# 查看 npm 版本
npm -version  
# 查看命令行列表说明
npm -ls

简写

  • -version => -v
  • -ls => -l

help / cache / root

# 查看帮助
npm help
# 清除缓存
npm cache clean --force
# 查看项目包位置
npm root  
 # 查看全局包位置
npm root -global

简写

  • --force => -f
  • -global => -g

config

# 配置全局包目录
npm config set prefix "D:\Software\nodejs\node_global"
# 配置缓存目录
npm config set cache "D:\Software\nodejs\node_cache"
# 配置仓库路径 
# 默认仓库 https://registry.npmjs.org 下载缓慢,可以改为国内镜像仓库
npm config set registry https://registry.npmmirror.com

# 配置日志级别(只有在 git Base 安装不会显示下载进度)
# silent,error,warn,notice(默认),http,timing,info,verbose,silly
npm config set loglevel notice

# 查看常见配置
npm config ls
# 查看所有配置
npm config ls -ls

# 查看指定配置
npm config get <configName>
# 删除指定配置
npm config delete <configName>

简写

  • -ls => -l
问题记录

遇到一个问题,nodeJs 执行 require('child_process').execSync('npm -v') 时卡住,需要等待特别久,而且之前都不会。

查阅资料后发现,在 nodeJs 执行 npm 命令时,会请求网络,即使这个命令根本不需要网络。把网络断了就很快执行完成,并且今日 npm 下载特别慢,推导就是网络问题导致。

最后解决方案:npm 的 registry 设置为国内镜像地址。

init

# 询问式创建 package.json
npm init
# 直接创建默认 package.json
npm init -yes  

# 创建一个子包,生成对应子包目录及其 package.json,
# 并把子包目录添加到父包 package.json 的 workspaces 字段中
# 在 npm install 后,node_modules 生成子包实际目录的软链接,之后就可以正常引入子包
# 环境要求:npm@7+,node@15+
npm init -workspace packages/plus
# 创建多个子包
npm init -workspace packages/plus -workspace packages/minus

简写

  • -yes => -y
  • -workspace => -w

run

# 查看 pakage.json 下的所有 scripts 脚本
npm run  
# 运行指定 scripts 脚本
npm run <task-name>  

# 运行子包的指定 scripts 脚本
npm run <task-name> -workspace <son-package>

简写

  • run start => start
  • run test => test
  • -workspace => -w

install

# 全局包,安装至全局包目录下的 node_modules,可全局使用对应命令行
npm install <name> -global 
# npm 也可以安装不同版本 npm
npm install npm -global

# (注:项目包,统一安装至当前目录下的 node_modules 文件夹)
# 安装 package.json 里的指定版本的所有包,生成 workspaces 字段指定的子包软链接
npm install
# (注:安装时已存在不同版本会覆盖,相同版本不处理)
# 运行依赖包安装,写入 package.json 的 dependencies 字段
npm install <name> 
npm install <name>  --save 
# 开发依赖包安装,写入 devDependencies 字段
npm install <name>  --save-dev

# 安装无标签最高版本的包
npm install <name>
# 安装指定版本的包
npm install <name>@<version>
# 安装指定标签最高版本的包
npm install <name>@<tag>

简写

  • install => i
  • -global => -g
  • --save => -S
  • --save-dev => -D

monorepo

# 指定子包安装依赖包
npm install <name> -workspace <son-package>
# 所有子包安装依赖包
npm install <name> -workspaces

简写

  • -workspace => -w
  • -workspaces => -ws

uninstall

# 卸载指定包
npm uninstall <name>  

# 指定子包卸载指定包
npm uninstall <name> -workspace <son-package>
# 所有子包卸载依赖包
npm uninstall <name> -workspaces

简写

  • -workspace => -w

list

查看本地安装包

npm list  # 查看已安装的所有包以及依赖
npm list --depth=0  # 查看已安装的所有顶层包
npm list <name>  # 查看指定包

简写

  • list => ls

info / view / show

查看 npm 仓库包

# 查看详细信息
npm info <name>
npm view <name>
npm show <name>

# 查看最新版本
npm info <name> version
npm view <name> version
npm show <name> version

# 查看历史版本
npm info <name> versions
npm view <name> versions
npm show <name> versions

简写

  • view => v

outdated / update

根据版本控制规则更新,package-lock.json 会修改,package.json 保持不变

# 查看需要更新的包
npm outdated
# 更新所有需要更新的包
npm update
# 更新指定包
npm update <name>  

强制更新到最新版

# 全局安装更新工具包
npm install -g npm-check-updates  
# 更新 package.json 和 package-lock.jso n的所有版本到最新版
ncu -u
# 执行更新
npm update
# 建立本地链接,用于调试
npm link
# 其它项目关联链接,之后常规方式引入进行测试
npm link <name>
# 其它项目取消链接
npm unlink <name>

login / who

# 登录npm官网:输入账号,密码,邮箱
npm login
# 验证是否登录成功,返回
npm who am i

publish / unpublish

# 发布包
npm publish
# 发布带自定义标签名的包
npm publish --tag beta
# 发布 @name/package 类型的包,默认是私有包,需要指定为公开包
npm publish --access public

# 卸载当前项目version字段指定版本的发布包
npm unpublish --force
// package.json
{
    // commonjs模块类型的入口文件,被 require('moduleName') 时加载
	"main": "dist/index.js",  
    
    // module模块类型的入口文件,被 import xx from 'moduleName' 时加载
    "module": "dist/index.js",  
    
    // npm发布的文件白名单
    "files": [  
        "dist"
    ],
} 

npx

# 直接运行全局目录中的可执行文件
cowsay 你好
# 运行当前目录下./node_modules/.bin 的可执行文件
npx cowsay 你好
# 当本地没有时,运行npm上发布的软件包的命令,并且可以指定版本
npx cowsay 你好
npx cowsay@<version> 你好
Last Updated 2024/3/14 09:51:53