npm
快速入门
初始化描述文件
npm init [-y | -f]
# 设置默认配置
npm set init.author.name lilith
npm set init.author.email [email protected]
npm set init.license MIT
基本操作
# 增 install/i
npm install [--save/-S | --save-dev/-D | -g/-G] [--force/-f]
# 删 uninstall/remove, rm, r, un, unlink
npm uninstall [--save/-S | --save-dev/-D | -g/-G]
# 更新 undate/up, upgrade
npm undate [--save/-S | --save-dev/-D | -g/-G]
# 查 list/ls/ll
npm list [--depth 0] [--save/-S | --save-dev/-D | -g/-G]
设置私有域包
私有域包以'@'符号开头
# 初始化时指定域名
npm init --scope=scopename
# 设置全局域名
npm config set scope scopename
# 要发布公共范围模块,需在发布模块时设置访问选项,此选项将保留为所有后续发布
npm publish --access=public
添加标签
添加的标签会在下次 publish 时一同发布,因为 dist 标签与 semver 共享相同的名称空间,应避免使用以数字或字母"v"开头的标签。
不可在社区不存在的版本上添加标签,如 v1.1.0 未发布到社区,则无法执行npm dist-tag add
# npm install 默认以最新的标签安装
npm install @
# 增
npm dist-tag add @ []
# 删
npm dist-tag rm
# 查
npm dist-tag [ls []]
设置 token 令牌
# 增
# 新增的token仅会出现一次,可及时保存在npmrc配置文件中
npm token create [--read-only] [--cidr=ids]
npm token create [--read-only] [--cidr=1.1.1.1/24,2.2.2.2/16]
# 删
npm token revoke
# 查
npm token list [--json | --parseable/--par]
cmd
npm adduser
- 创建或验证指定注册表中指定的用户,并将凭据保存到文件中
-
npm login
是该命令别名,作用完全相同 - 若指定 registry 和 scope,则账户与其关联
npm audit
扫描项目是否有漏洞
# 扫描
npm audit [--json | --parseable/--par]
# 扫描并修改
npm audit fix [--force/-f | --package-lock-only | --dry-run | --production | --only=dev]
npm bugs/issues
打开包的 bug 列表 bugs.url
npm bugs []
npm home
打开包的主页 homepage
npm home []
npm repo
打开包的源码仓库 repository.url
npm repo []
npm ci
类似npm install
,常用于自动化环境,明显快于常规 npm 安装速度,项目中必须存在 package-lock.json 或 shrinkwrap.json
npm config/c
管理 npm 配置文件
npm config set [--global/-g]
npm config get
npm config delete
npm config list [--long/-l] [--json]
npm config edit
npm get
npm set [--global/-g]
npm link
将 npm 模块链接到对应的运行项目中去
进入npm-link-module
模块,执行npm link
,此时npm-link-module
被链接到本地,进入需要使用的项目,执行npm link npm-link-module
,即可像正常依赖一样使用该依赖
npm logout
退出登录
npm logout [--registry=] [--scope=<@scope>]
# 如创建额外token,退出登录后在配置文件添加token,仍可正常运行
npm org
管理组织
npm org set [developer | admin | owner]
npm org rm
npm org ls []
npm outdated
查看是否有已过期的包
npm outdated [[<@scope>/]]
npm owner/author
管理包已发布包的所有权
npm owner add [<@scope>/]
npm owner rm [<@scope>/]
npm owner ls [<@scope>/]
npm prefix
等同于 pwd,可查看全局目录前缀-g
npm prefix [--global/-g]
npm profile
从命令行更改个人配置
npm profile get [] [--json | --parseable/--par]
npm profile set [--json | --parseable/--par]
npm profile set password
npm profile enable-2fa [auth-and-writes|auth-only] # 启用双重身份验证
npm profile disable-2fa # 禁用双重身份验证
npm prune
移除无关的包
npm prune [[<@scope>/]...] [--production] [--dry-run] [--json]
npm publish
发包
npm publish [|] [--tag ] [--access ] [--otp otpcode] [--dry-run]
npm unpublish
在注册表中移除包
npm unpublish [<@scope>/][@]
npm restart
重新启动,将运行停止,重新启动,启动等脚本。执行顺序如下:
- prerestart
- prestop
- stop
- poststop
- restart
- prestart
- start
- poststart
- postrestart
npm restart [-- ]
npm root
将有效的 node_modules 文件夹打印出来,可查看全局目录前缀-g
类似于 npm prefix + node_modules
npm root [--global/-g]
npm run-script/run
执行 scripts 中的命令
# -- 的空格必须添加,如未添加会识别为配置
npm run-script [--silent] [-- ...]
# 添加空格,为参数,通过process.argv获取 ['grep=pattern', 'name=value']
npm run test -- grep="pattern" name="value" #
# 不加空格,为配置,只可通过process.env.npm_config_获取
npm run test --grep="pattern" --name="value"
# process.env.npm_config_grep => pattern
# process.env.npm_config_name => value
该命令具有两个钩子,在脚本执行前执行 pre-,脚本执行后执行 post-。如:pretest,test,posttest
npm search/s/se/find
查找包
npm search [--long/-l] [--json] [--parseable/--par] [--no-description] [search terms ...]
npm shrinkwrap
锁定依赖包的版本,基于 node_modules 生成 shrinkwrap.json,优先级高于 package-lock.json。相比于 package-lock.json 向 npm4 版本及以下兼容
npm start
执行 scripts 中的 start 命令,默认执行node server.js
npm stop
执行 scripts 中的 stop 命令
npm team
管理组织团队和团队成员
npm team create
npm team destroy
npm team add
npm team rm
npm team ls |
npm team edit
npm test/t
执行 scripts 中的 test 命令
npm version
迭代包版本,且生成 git 标签
npm version [ | major | minor | patch | premajor | preminor | prepatch | prerelease [--preid=] | from-git]
npm view/info/show/v
npm view [<@scope>/][@] [[.]...]
npm whoami
显示 npm 用户名
npm whoami [--registry ]
npx
调用项目安装的模块
运行的时候,会到 node_modules/.bin 路径和环境变量$PATH 里面,检查命令是否存在
npx mocha --version
等价于node-modules/.bin/mocha --version
避免全局安装模块
create-react-app 这个模块是全局安装,npx 可以运行它,而且不进行全局安装
npx create-react-app my-react-app
,npx 将 create-react-app 下载到一个临时目录,使用以后再删除
只要 npx 后面的模块无法在本地发现,就会下载同名模块
--no-install 参数强制使用本地模块
--ignore-existing 参数忽略本地的同名模块
使用不同版本的 node
npx [email protected] -v
发包流程
官方文档
创建账号
npm adduser
登录
npm login
# input your Username, Password, Email
# 测试当前账号
npm whoami
发包
npm publish
更新
# 修改主版本号
npm version major
# 修改次版本号
npm version minor
# 修改修订号
npm version patch
# 修改版本号后再次执行发布命令
npm version && npm publish