- 是什么:
- npm 是使用別人代碼與分享自己代碼(代碼共享)的一種開(kāi)發(fā)方式囊骤,同時(shí)它可以輕松的管理同一份代碼的不同版本猿涨。
- npm隨node一起安裝握童,但是我們也可以運(yùn)行
npm install npm@latest -g
來(lái)更新版本
- 無(wú)權(quán)限保存npm包的處理方式
-
修改默認(rèn)路徑的使用權(quán)限
操作 命令 查看當(dāng)前用戶(hù) whoami
查找npm默認(rèn)路徑 npm config get prefix
修改目錄擁有者為當(dāng)前用戶(hù) sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
-
修改默認(rèn)路徑
操作 命令 創(chuàng)建目錄 mkdir ~/.npm-global
設(shè)置新路徑 npm config set prefix '~/.npm-global'
創(chuàng)建環(huán)境配置文件 創(chuàng)建 ~/.profile
并添加內(nèi)容export PATH=~/.npm-global/bin:$PATH
執(zhí)行文本,更新系統(tǒng)變量 source ~/.profile
使用 homebrew 安裝 node 可避免權(quán)限的問(wèn)題
brew install node
叛赚,brew 會(huì)對(duì)相關(guān)的目錄設(shè)置正確的權(quán)限澡绩。
- npm 安裝
全局
與局部(默認(rèn))
依賴(lài)類(lèi)型 | 命令 |
---|---|
未寫(xiě)入package.json ,僅下載到node_modules
|
npm install lodash |
開(kāi)發(fā)時(shí)依賴(lài)devDependencies
|
npm install lodash --save-dev |
程序運(yùn)行依賴(lài)dependencies
|
npm install lodash --save |
- 包版本下載規(guī)則
- 沒(méi)有
package.json
: 加載當(dāng)前最新版本 - 有
package.json
: 加載符合版本語(yǔ)義解析的最新版本
- 語(yǔ)義版本號(hào)解析參見(jiàn)semver語(yǔ)義版本介紹
-
package.json
文件
- 必須包含
{name: "project name",version: "project version"}
- 創(chuàng)建
package.json
-
npm init
詢(xún)問(wèn)式配置 -
npm init --yes(or -y)
直接創(chuàng)建默認(rèn)配置 -
npm set init.author.email "author email"
預(yù)設(shè)字段信息 -
npm-init.js
預(yù)設(shè)package.json
范本
-
- npm 更新局部包
操作 | 命令 |
---|---|
列舉 | npm ls |
查看是否過(guò)時(shí) | npm outdated |
更新局部包到最新 | npm update |
- 如何更新指定包到指定版本:先移除俺附,再安裝指定包
- 移除包
操作 | 命令 | 說(shuō)明 |
---|---|---|
移除 | npm uninstall lodash |
不會(huì)修改package.json
|
同步移除 | npm uninstall --save(-dev) lodash |
刪除package.json 相應(yīng)字段 |
清理 | npm prune |
清理node_modules ,移除package.json 中不存在的包 |
- 全局安裝
- 能夠在命令行訪問(wèn)包
- 能夠在任何項(xiàng)目中直接
require
-
npm update -g jshint
指定全局包更新 -
npm update
所有全局包更新 -
npm outdated -g --depth=0
查看過(guò)時(shí)包 -
npm uninstall -g jshint
移除指定包(不存在npm uninstall -g
移除所有全局包的操作)
- npm 包發(fā)布
包中.gitignore
或.npmignore
以及node_modules
目錄之外的文件都會(huì)被包含在發(fā)布的包中肥卡。
-
npm install . -g
安裝當(dāng)前包,確認(rèn)是否可運(yùn)行 - 發(fā)布前先查看npm上是否已經(jīng)存在該名字的包:
https://npmjs.com/package/<package>
-
npm adduser
添加npmjs注冊(cè)的用戶(hù) - 訪問(wèn)https://www.npmjs.com/email-edit:<package-name>校驗(yàn)郵箱
-
npm publish <dir>
發(fā)布包 -
npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease]
自增來(lái)修改版本號(hào) -
npm publish
重新發(fā)布
- 私有模塊:
@scope/package
, 發(fā)布需付費(fèi)事镣,他人無(wú)法使用 - 打標(biāo)簽
npm publish --tag beta
- 使用
npm install <pkg>@<tag>