一、概述
记录 npm 使用方法
二、npm 基本操作
#查看版本
$ npm -v #同 npm --version,查看 npm 版本
1. 包管理
init
初始化 node 项目
$ mkdir node_demo #新建文件夹
$ cd node_demo #进入文件夹
$ npm init -y #初始化,并生成package.json 文件
search
搜索包
npm search <包名>
# moment 时间处理包 $ npm search moment
install
安装包
别名:i
|isntall
|add
npm install
当前项目安装 package.json 记录的所有包
参数:--prod
只安装 package.json 生产环境的包npm install <包名>
当前项目安装指定包,
参数:--save-dev
|-D
为开发环境安装
参数:--save-prod
|-S
为生产环境安装
参数:-g
全局# moment 时间处理包 $ npm install -S moment #项目安装 $ npm install -g moment #全局安装
ls
查看已安装的包
别名:list
|la
|ll
npm ls
查看安装过的包
参数:--depth
依赖深度
参数:-g
全局
参数:<pkg>
包名# moment 时间处理包 $ npm ls moment --depth 0 #查看当前目录安装的包@安装版本 $ npm ls --depth 0 #查看当前目录安装过的所有包@安装版本 $ npm ls --depth 0 -g #查看全局安装的所有包@安装版本
update
更新已安装的包
别名:up
|upgrade
|udpate
npm update
更新已安装的所有包
参数:-g
全局$ npm update #更新当前目录已安装的所有包 $ npm update -g #更新全局安装的所有包
npm update <包名>
参数:-g
全局# moment 时间处理包 $ npm update moment #更新当前目录指定的包 $ npm update -g moment #更新全局安装的指定包
uninstall
卸载已安装的包
别名:un
|unlink
|remove
|rm
|r
npm uninstall <包名>
参数:-g
全局# moment 时间处理包 $ npm uninstall moment #卸载当前目录已安装的指定包,参数 --save-dev 和 --save-prod 同样适用 $ npm uninstall -g moment #卸载全局安装的指定包
2. package.json
- 用
npm init -y
生成的 package.json 文件,内容如下:
可以设置默认值{ "name":"example", //名称,默认目录名称 "version":"1.0.0", //版本,默认1.0.0 "description": "", //描述,默认"" "main":"index.js", //程序入口 "scripts": { //执行脚本 "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], //关键字,值为字符串数组 "author": "", //作者 "license": "ISC", //许可证 }
其余的值,可以手动编辑。$ npm set init.author.email "wombat@npmjs.com" #设置作者的Email $ npm set init.author.name "ag_dubs" #设置作者的名字 $ npm set init.license "MIT" #设置许可类型
- 安装包的记录在 package.json 中
用npm i -D <包名>
安装的包,会存在 “devDependencies” 中,用于开发和测试环境;用npm i -S <包名>
安装的包,会存在 “dependencies” 中,用于生产环境。
版本前缀{ //上面的省略。。。 //生产环境的依赖包 "dependencies": { "moment": "^2.24.0" }, //开发环境的依赖包 "devDependencies"": { "moment": "^2.24.0" } }
^
和~
表示依赖包的适用范围,前缀 版本 范围 举例 ~
Patch releases 1.0 or 1.0.x ~1.0.4 ^
Minor releases 1 or 1.x ^1.0.4
3. 开发
run-script
运行脚本,执行 package.json 里 “scripts” 中的命令。如未找该命令,会输出全部命令。
别名:run
|rum
|urn
首先,新建 index.js 文件 填入以下内容
//index.js
console.log("hello world!");
其次,在 package.json 的 “scripts” 下添加 “go”: “node index.js”
{
"scripts": {
"go": "node index.js", //添加的脚本命令
"test": "echo \"Error: no test specified\" && exit 1" //默认值
},
}
最后执行 npm run go
,输出 “hello world!”
$ npm run go
> example@1.0.0 go E:\example
> node index.js
hello world
test
执行 package.json 中 “scripts” 的 test 命令
$ npm test #等同 npm run test
start
执行 package.json 中 “scripts” 的 start 命令,如没有 start 时会默认执行 “node server.js”
$ npm start #等同 npm run start
stop
执行 package.json 中 “scripts” 的 stop 命令
$ npm stop #等同 npm run stop
restart
会按顺序执行 stop 和 start 命令
$ npm restart #等同 npm stop && npm start 或 npm run stop && npm run start
build
是由 npm link
命令和 npm install
命令组成的管道命令。要直接运行就执行 package.json 中 “scripts” 的 build 命令
$ npm build #执行由 ```npm link```命令和 ```npm install```命令组成的管道命令
$ npm run build #执行 package.json 中 "scripts" 的 build 命令
rebuild
用于必须使用新的二进制文件重新编译所有 C++ 插件
别名:rb
$ npm rebuild
三、npm 进阶操作
1. 包管理
install-test
先运行 install 命令,紧接着运行 test 命令。 它与 install 命令所能接受的参数完全相同。
别名:t
|tst
$ npm install-test
ci
安装 package-lock.json 中的所有包。安装速度快,常用于持续集成。
- 必须有 package-lock.json 或 npm-shrinkwrap.json 文件
- 如果 package-lock.json 与 package.json 中的包不匹配。则报错并退出,而不是更新 package-lock.json
- 只能安装整个项目:不能添加单个依赖包。
- 如 node_modules 已经存在,则在
npm ci
开始安装之前自动删除 - 永远不会写入 package.json 或 package-lock.json
$ npm ci
install-ci-test
执行完 npm ci 后立即执行 npm test。别名:cit
$ npm install-ci-test
outdated
检查安装的包是否过时
npm outdated
参数:--json
以json形式输出
参数:$ npm outdated --json { "node-media-server": { "current": "1.4.7", "wanted": "1.5.1", "latest": "2.1.4", "location": "node_modules\\node-media-server" } }
--long
显示额外的信息
参数:$ npm outdated -l #--long Package Current Wanted Latest Location Package Type Homepage node-media-server 1.4.7 1.5.1 2.1.4 example dependencies https://github.com/illuspas/Node-Media-Server#readme
--parseable
参数:$ npm outdated --parseable E:\example\node_modules\node-media-server:node-media-server@1.5.1:node-media-server@1.4.7:node-media-server@2.1.4
--global
检查全局安装的包,而不是当前项目中的包。
参数:$ npm outdated --global
--depth
检查依赖关系树的最大深度。默认0$ npm outdated --depth 0
dedupe
优化包的引用,去掉重复的包 dedupe
别名:ddp
|find-dupes
$ npm dedupe
prune【待更新】
移除无关的包 prune
$ npm prune
shrinkwrap
锁定依赖包的版本,生成 npm-shrinkwrap.json 文件
$ npm shrinkwrap
hook【待更新】
钩子操作 hook
$ npm hook ls [pkg]
$ npm hook add <entity> <url> <secret>
$ npm hook update <id> <url> [secret]
$ npm hook rm <id>
2. 开发
audit【待更新】
安全审核
$ npm audit [--json] [--production]
$ npm audit fix [--force|--package-lock-only|--dry-run|--production|--only=(dev|prod)]
pack【待更新】
打包
$ npm pack [[<@scope>/]<pkg>...] [--dry-run]
3. 账户
nrm 镜像源管理工具
#使用淘宝镜像源安装 nrm
$ npm i -g nrm --registry=https://registry.npm.taobao.org
#查看版本并验证安装
$ nrm --version
#切换回 npm 官方镜像,用于上传自己开发的包
$ nrm use npm
#切换到 淘宝镜像 用于安装包用。等同直接设置淘宝镜像。
$ nrm use taobao
#查看当前应用的镜像源
$ nrm current
#查看能设置的镜像源
$ nrm ls
adduser
注册账户
在npm网站注册。或在命令行中注册(用已安装的 nrm 切换到官方镜像源)。
$ nrm use npm #切换到官方镜像源
$ npm adduser #注册帐号,如有账户略过
$ Username: #输入用户名
$ Password: #输入密码
$ Email: (this IS public) #输入公开的电子邮箱
whoami
查看当前用户名
$ npm whoami
logout
退出当前账户
$ npm logout
4. 发包
link【待更新】
测试自己开发的包
别名:ln
$ npm link (in package dir)
$ npm link [<@scope>/]<pkg>[@<version>]
version
包的版本操作
$ npm version #查看版本
$ npm version <x.y.z> #新版本 [x,y,z]=[major,minor,patch]
$ npm version patch #版本 x.y.z+1
$ npm version minor #版本 x.y+1.z=0
$ npm version major #版本 x+1.y=0.z=0
$ npm version prepatch #版本 x.y.z-r,z+1,r=0
$ npm version preminor #版本 x.y.z-r,y+1,z=0,r=0
$ npm version premajor #版本 x.y.z-r,x+1,y=0,z=0,r=0
$ npm version prerelease #版本 x.y.z-r,r+1
$ npm version prerelease --preid=<n> #版本 x.y.z-n.r,z= !n?+1:z,n=n?+1:0
$ npm version from-git #从 git 上获取版本
$ npm version patch -m "%s" #或 --mmessage,%s 为改动后的版本号,提交git用的
publish
发布包。必须在官方镜像上操作,并且登录 npm 账号
$ npm publish #发布包
$ npm publish --access public #发布org包
unpublish
撤回发布,好像只能撤回24小时之内发布的包
$ npm unpublish #撤回发布
$ npm unpublish --force #强制撤回
fund
查看捐赠链接
$ npm fund [--json]
$ npm fund [--browser] [[<@scope>/]<pkg>]
5. 配置
ping
ping 镜像源
$ npm ping
doctor
诊断 npm 运行环境
$ npm doctor
completion
用 tab 键进行 npm 命令自动补全,windows 的 cmd 不支持。
$ npm completion ~/.bashrc #或 ~/.zshrc
$ source ~/.bashrc
bin
查看 bin 目录
$ npm bin #项目
$ npm bin -g #全局
prefix
查看 node_modules 目录的前缀路径
$ npm prefix #项目
$ npm prefix -g #全局
root
查看依赖包安装目录,即 node_modules 的路径
$ npm root #项目
$ npm root -g #全局
view
查看包信息
$ npm view #查看当前项目信息
$ npm view <pkg> #查看指定包信息
$ npm view <pkg> version #查看依赖包的发行版本
四、npm 终极操作
1. 包管理
docs
在浏览器查看包的文档
别名:home
$ npm docs <pkgname> #指定包的文档
$ npm docs . #当前包的文档
bugs
在浏览器查看包的bug
$ npm bugs [<pkgname>] #查看指定包的bug
$ npm bugs #查看当前包的bug
repo
在浏览器查看代码库
$ npm repo [<pkg>] #查看代码库
star
给包点赞
$ npm star [<pkg>...]
$ npm unstar [<pkg>...]
stars
$ npm stars [<user>] #查看点赞过的包
2. 开发
edit【待更新】
$ npm edit <pkg>[/<subpkg>...]
explore【待更新】
$ npm explore <pkg> [ -- <command>]
cache【待更新】
$ npm cache add <tarball file>
$ npm cache add <folder>
$ npm cache add <tarball url>
$ npm cache add <git url>
$ npm cache add <name>@<version>
$ npm cache clean
$ npm cache verify
3. 账户
profile【待更新】
token【待更新】
4. 发包【待更新】
access【待更新】
dist-tag【待更新】
deprecate【待更新】
5. 包的权限管理
owner【待更新】
team【待更新】
org【待更新】
6. 配置
config | get | set【待更新】
$ npm config set registry https://registry.npm.taobao.org
返回目录