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
link / unlink
# 建立本地链接,用于调试
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> 你好