npm
快速入門
初始化描述文件
npm init [-y | -f]
# 設(shè)置默認(rèn)配置
npm set init.author.name lilith
npm set init.author.email lilith@163.com
npm set init.license MIT
基本操作
# 增 install/i
npm install <package_name> [--save/-S | --save-dev/-D | -g/-G] [--force/-f]
# 刪 uninstall/remove, rm, r, un, unlink
npm uninstall <package_name> [--save/-S | --save-dev/-D | -g/-G]
# 更新 undate/up, upgrade
npm undate <package_name> [--save/-S | --save-dev/-D | -g/-G]
# 查 list/ls/ll
npm list [--depth 0] [--save/-S | --save-dev/-D | -g/-G]
設(shè)置私有域包
私有域包以'@'符號(hào)開頭
# 初始化時(shí)指定域名
npm init --scope=scopename
# 設(shè)置全局域名
npm config set scope scopename
# 要發(fā)布公共范圍模塊抡柿,需在發(fā)布模塊時(shí)設(shè)置訪問選項(xiàng)早处,此選項(xiàng)將保留為所有后續(xù)發(fā)布
npm publish --access=public
添加標(biāo)簽
添加的標(biāo)簽會(huì)在下次 publish 時(shí)一同發(fā)布,因?yàn)?dist 標(biāo)簽與 semver 共享相同的名稱空間途样,應(yīng)避免使用以數(shù)字或字母"v"開頭的標(biāo)簽。
不可在社區(qū)不存在的版本上添加標(biāo)簽濒憋,如 v1.1.0 未發(fā)布到社區(qū)何暇,則無法執(zhí)行npm dist-tag add <pkg>@<1.0.0> beta
# npm install 默認(rèn)以最新的標(biāo)簽安裝
npm install <name>@<tag>
# 增
npm dist-tag add <pkg>@<version> [<tag>]
# 刪
npm dist-tag rm <pkg> <tag>
# 查
npm dist-tag [ls [<pkg>]]
設(shè)置 token 令牌
# 增
# 新增的token僅會(huì)出現(xiàn)一次,可及時(shí)保存在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 <tokenKey>
# 查
npm token list [--json | --parseable/--par]
cmd
npm adduser
- 創(chuàng)建或驗(yàn)證指定注冊(cè)表中指定的用戶凛驮,并將憑據(jù)保存到文件中
-
npm login
是該命令別名裆站,作用完全相同 - 若指定 registry 和 scope,則賬戶與其關(guān)聯(lián)
npm audit
掃描項(xiàng)目是否有漏洞
# 掃描
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 [<pkgname>]
npm home
打開包的主頁 homepage
npm home [<pkg>]
npm repo
打開包的源碼倉庫 repository.url
npm repo [<pkg>]
npm ci
類似npm install
黔夭,常用于自動(dòng)化環(huán)境宏胯,明顯快于常規(guī) npm 安裝速度,項(xiàng)目中必須存在 package-lock.json 或 shrinkwrap.json
npm config/c
管理 npm 配置文件
npm config set <key> <value> [--global/-g]
npm config get <key>
npm config delete <key>
npm config list [--long/-l] [--json]
npm config edit
npm get <key>
npm set <key> <value> [--global/-g]
npm link
將 npm 模塊鏈接到對(duì)應(yīng)的運(yùn)行項(xiàng)目中去
進(jìn)入npm-link-module
模塊本姥,執(zhí)行npm link
肩袍,此時(shí)npm-link-module
被鏈接到本地,進(jìn)入需要使用的項(xiàng)目婚惫,執(zhí)行npm link npm-link-module
氛赐,即可像正常依賴一樣使用該依賴
npm logout
退出登錄
npm logout [--registry=<url>] [--scope=<@scope>]
# 如創(chuàng)建額外token,退出登錄后在配置文件添加token先舷,仍可正常運(yùn)行
npm org
管理組織
npm org set <orgname> <username> [developer | admin | owner]
npm org rm <orgname> <username>
npm org ls <orgname> [<username>]
npm outdated
查看是否有已過期的包
npm outdated [[<@scope>/]<pkg>]
npm owner/author
管理包已發(fā)布包的所有權(quán)
npm owner add <user> [<@scope>/]<pkg>
npm owner rm <user> [<@scope>/]<pkg>
npm owner ls [<@scope>/]<pkg>
npm prefix
等同于 pwd艰管,可查看全局目錄前綴-g
npm prefix [--global/-g]
npm profile
從命令行更改個(gè)人配置
npm profile get [<property>] [--json | --parseable/--par]
npm profile set <property> <value> [--json | --parseable/--par]
npm profile set password
npm profile enable-2fa [auth-and-writes|auth-only] # 啟用雙重身份驗(yàn)證
npm profile disable-2fa # 禁用雙重身份驗(yàn)證
npm prune
移除無關(guān)的包
npm prune [[<@scope>/]<pkg>...] [--production] [--dry-run] [--json]
npm publish
發(fā)包
npm publish [<tarball>|<folder>] [--tag <tag>] [--access <public|restricted>] [--otp otpcode] [--dry-run]
npm unpublish
在注冊(cè)表中移除包
npm unpublish [<@scope>/]<pkg>[@<version>]
npm restart
重新啟動(dòng),將運(yùn)行停止蒋川,重新啟動(dòng)牲芋,啟動(dòng)等腳本。執(zhí)行順序如下:
- prerestart
- prestop
- stop
- poststop
- restart
- prestart
- start
- poststart
- postrestart
npm restart [-- <args>]
npm root
將有效的 node_modules 文件夾打印出來尔破,可查看全局目錄前綴-g
類似于 npm prefix + node_modules
npm root [--global/-g]
npm run-script/run
執(zhí)行 scripts 中的命令
# -- <args>的空格必須添加街图,如未添加會(huì)識(shí)別為配置
npm run-script <command> [--silent] [-- <args>...]
# 添加空格,為參數(shù)懒构,通過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
該命令具有兩個(gè)鉤子胆剧,在腳本執(zhí)行前執(zhí)行 pre-,腳本執(zhí)行后執(zhí)行 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,優(yōu)先級(jí)高于 package-lock.json蚁阳。相比于 package-lock.json 向 npm4 版本及以下兼容
npm start
執(zhí)行 scripts 中的 start 命令铃绒,默認(rèn)執(zhí)行node server.js
npm stop
執(zhí)行 scripts 中的 stop 命令
npm team
管理組織團(tuán)隊(duì)和團(tuán)隊(duì)成員
npm team create <scope:team>
npm team destroy <scope:team>
npm team add <scope:team> <user>
npm team rm <scope:team> <user>
npm team ls <scope>|<scope:team>
npm team edit <scope:team>
npm test/t
執(zhí)行 scripts 中的 test 命令
npm version
迭代包版本,且生成 git 標(biāo)簽
npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease [--preid=<prerelease-id>] | from-git]
npm view/info/show/v
npm view [<@scope>/]<name>[@<version>] [<field>[.<subfield>]...]
npm whoami
顯示 npm 用戶名
npm whoami [--registry <registry>]
npx
調(diào)用項(xiàng)目安裝的模塊
運(yùn)行的時(shí)候螺捐,會(huì)到 node_modules/.bin 路徑和環(huán)境變量$PATH 里面颠悬,檢查命令是否存在
npx mocha --version
等價(jià)于node-modules/.bin/mocha --version
避免全局安裝模塊
create-react-app 這個(gè)模塊是全局安裝矮燎,npx 可以運(yùn)行它,而且不進(jìn)行全局安裝
npx create-react-app my-react-app
赔癌,npx 將 create-react-app 下載到一個(gè)臨時(shí)目錄诞外,使用以后再刪除
只要 npx 后面的模塊無法在本地發(fā)現(xiàn),就會(huì)下載同名模塊
--no-install 參數(shù)強(qiáng)制使用本地模塊
--ignore-existing 參數(shù)忽略本地的同名模塊
使用不同版本的 node
npx node@0.12.8 -v
發(fā)包流程
創(chuàng)建賬號(hào)
npm adduser
登錄
npm login
# input your Username, Password, Email
# 測(cè)試當(dāng)前賬號(hào)
npm whoami
發(fā)包
npm publish
更新
# 修改主版本號(hào)
npm version major
# 修改次版本號(hào)
npm version minor
# 修改修訂號(hào)
npm version patch
# 修改版本號(hào)后再次執(zhí)行發(fā)布命令
npm version <update_version> && npm publish