npm

NPM依賴包版本號~和^和*的區(qū)別:

~ 會匹配最近的小版本依賴包坑傅,比如~1.2.3會匹配所有1.2.x版本溜嗜,但是不包括1.3.0
^ 會匹配最新的大版本依賴包,比如^1.2.3會匹配所有1.x.x的包遥巴,包括1.3.0伍玖,但是不包括2.0.0

  • 這意味著安裝最新版本的依賴包
    推薦使用~,只會修復版本的bug钞艇,比較穩(wěn)定

包與模塊:有package.json文件的文件/目錄就可以是一個包
元數(shù)據(jù):描述自身的數(shù)據(jù)
package.json文件中name與version為必需
2018 年了啄寡,你還是只會 npm install 嗎?

淘寶npm鏡像使用方法
1.臨時使用

npm --registry https://registry.npm.taobao.org install express

2.持久使用

npm config set registry https://registry.npm.taobao.org

使用npm踩過的坑
Windows下的Nodejs npm路徑是Users下appdata,修改路徑方法為
prefix = D:\nodejs\node_global
cache = D:\nodejs\node_global
我們在使用 npm install 安裝模塊的模塊的時候 哩照,一般會使用下面這幾種命令形式:

  • npm install moduleName # 安裝模塊到項目目錄下

  • npm install -g moduleName # -g 的意思是將模塊安裝到全局挺物,具體安裝到磁盤哪個位置,要看 npm config prefix 的位置飘弧。

  • npm install -save moduleName # -save 的意思是將模塊安裝到項目目錄下识藤,并在package文件的dependencies節(jié)點寫入依賴。

  • npm install -save-dev moduleName # -save-dev 的意思是將模塊安裝到項目目錄下眯牧,并在package文件的devDependencies節(jié)點寫入依賴蹋岩。
    那么問題來了,在項目中我們應(yīng)該使用四個命令中的哪個呢学少?這個就要視情況而定了剪个。下面對這四個命令進行對比,看完后你就不再這么問了版确。

npm install moduleName 命令

  1. 安裝模塊到項目node_modules目錄下扣囊。
  2. 不會將模塊依賴寫入devDependencies或dependencies 節(jié)點。
  3. 運行 npm install 初始化項目時不會下載模塊绒疗。
  • npm install -g moduleName 命令
    全局安裝后可以作為命令行工具使用
  1. 安裝模塊到全局侵歇,不會在項目node_modules目錄中保存模塊包。
  2. 不會將模塊依賴寫入devDependencies或dependencies 節(jié)點吓蘑。
  3. 運行 npm install 初始化項目時不會下載模塊惕虑。
  • npm install -save moduleName 命令
    npm5以上可以不加坟冲,默認
  1. 安裝模塊到項目node_modules目錄下。
  2. 會將模塊依賴寫入dependencies 節(jié)點溃蔫。
  3. 運行 npm install 初始化項目時健提,會將模塊下載到項目目錄下。
  4. 運行npm install --production或者注明NODE_ENV變量值為production時伟叛,會自動下載模塊到node_modules目錄中私痹。
  • npm install -save-dev moduleName 命令或 -D
  1. 安裝模塊到項目node_modules目錄下。
  2. 會將模塊依賴寫入devDependencies 節(jié)點统刮。
  3. 運行 npm install 初始化項目時紊遵,會將模塊下載到項目目錄下。
  4. 運行npm install --production或者注明NODE_ENV變量值為production時侥蒙,不會自動下載模塊到node_modules目錄中暗膜。

總結(jié)
devDependencies 節(jié)點下的模塊是我們在開發(fā)時需要用的,比如項目中使用的 gulp 鞭衩,壓縮css桦山、js的模塊。這些模塊在我們的項目部署后是不需要的醋旦,所以我們可以使用 -save-dev 的形式安裝恒水。像 express 這些模塊是項目運行必備的,應(yīng)該安裝在 dependencies 節(jié)點下饲齐,所以我們應(yīng)該使用 -save 的形式安裝钉凌。

npm install packagename 0.0.1
安裝指定版本的模塊

npm init
這個命令會在當前目錄生成一個package.json文件,這個文件中會記錄一些關(guān)于項目的信息捂人,比如:項目的作者御雕,git地址,入口文件滥搭、命令設(shè)置酸纲、項目名稱和版本號等等,一般情況下這個文件是必須要有的瑟匆,方便后續(xù)的項目添加和其他開發(fā)人員的使用闽坡。

npm install packagename --save 或 -S
--save、-S參數(shù)意思是把模塊的版本信息保存到dependencies(生產(chǎn)環(huán)境依賴)中愁溜,即你的package.json文件的dependencies字段中疾嗅;

npm install packagename --save-dev 或 -D
--save-dev 、 -D參數(shù)意思是把模塊版本信息保存到devDependencies(開發(fā)環(huán)境依賴)中冕象,即你的package.json文件的devDependencies字段中代承;

npm install packagename --save-optional 或 -O
--save-optional 、 -O參數(shù)意思是把模塊安裝到optionalDependencies(可選環(huán)境依賴)中渐扮,即你的package.json文件的optionalDependencies字段中论悴。

npm install packagename --save-exact 或 -E
--save-exact 掖棉、 -E參數(shù)的意思是精確的安裝指定版本的模塊,細心的同學會發(fā)現(xiàn)dependencies字段里每個模塊版本號前面的^不見鳥膀估。啊片。。

如果你打開的是別人的項目玖像,這個時候一般是沒有任何依賴包的,但是所有需要的包已在package.json里面寫好了齐饮,這個時候我們就可以使用npm install來安裝所有項目中需要的依賴包了

npm install packagename -g 或 --global
安裝全局的模塊(不加參數(shù)的時候默認安裝本地模塊)

npm list 或 npm ll 或 npm la 或 npm ls
查看所有已經(jīng)安裝的模塊 ll 捐寥、 ls 、 la 三個命令意思都一樣 但是列表的展示方式不一樣 喜歡用哪個就看個人喜好了,不懂的同學可以每個都去試下祖驱。

npm uninstall packagename [options]
卸載已經(jīng)安裝的模塊握恳,后面的options參數(shù)意思與安裝時候的意思一樣,與這個命令相同的還有npm remove 、npm rm捺僻、npm r 乡洼、 npm un 、 npm unlink 這幾個命令功能和npm uninstall基本一樣匕坯,個人覺得沒什么區(qū)別束昵。

npm outdated
這個命令會列出所有已經(jīng)過時了的模塊,對于已經(jīng)過時了的模塊可以使用下面的命令去更新

npm update [-g]
更新已經(jīng)安裝的模塊(或全局的模塊)

npm help '命令'
查看某條命令的詳細幫助

npm root
查看命令的絕對路徑

npm config
設(shè)置npm命令的配置路徑葛峻,這個命令一般用于設(shè)置代理锹雏,畢竟大部分都是國外的模塊,不過個人還是比較喜歡用cnpm 這個命令是用的淘寶的鏡像术奖,用法與npm一樣礁遵,速度還可以。

除去以上的這些命令外采记,經(jīng)常還能見到一些npm start佣耐、npm deploy、 npm build等等之類的命令唧龄,這些一般都是在package.json 中自定義的一些啟動兼砖、重啟、停止服務(wù)之類的命令既棺∫从悖可以在package.json文件的scripts字段里自定義。例如:

"scripts": {
"test": "echo "Error: no test specified" && exit 1",
"build": "webpack",
"start": "webpack-dev-server main.js,
"deploy": "set NODE_ENV=production"
}

npm緩存命令

npm cache 提供了三個命令援制,分別是npm cache add, npm cache clean, npm cache verify戏挡。

npm cache add

官方解釋說這個命令主要是 npm 內(nèi)部使用,但是也可以用來手動給一個指定的 package 添加緩存晨仑。(This command is primarily intended to be used internally by npm, but it can provide a way to add data to the local installation cache explicitly.)

npm cache clean

刪除緩存目錄下的所有數(shù)據(jù)褐墅。從 npm@5 開始拆檬,為了保證緩存數(shù)據(jù)的有效性和完整性,需要加上 --force 參數(shù)妥凳。

npm cache verify

驗證緩存數(shù)據(jù)的有效性和完整性竟贯,清理垃圾數(shù)據(jù)。

npm 的緩存是使用 pacote 模塊進行下載和管理逝钥,基于 cacache 緩存存儲屑那。由于 npm 會維護緩存數(shù)據(jù)的完整性,一旦數(shù)據(jù)發(fā)生錯誤艘款,就回重新獲取持际。因此不推薦手動清理緩存,除非需要釋放磁盤空間哗咆,這也是要強制加上 --force 參數(shù)的原因

npm離線安裝

npm 提供了離線安裝模式蜘欲,使用 --offline, --prefer-offline, --prefer-online 可以指定離線模式。

--prefer-offline / --prefer-online
“離線優(yōu)先/網(wǎng)絡(luò)優(yōu)先”模式晌柬。

如果設(shè)置為--prefer-offline 則優(yōu)先使用緩存數(shù)據(jù)姥份,如果沒有匹配的緩存數(shù)據(jù),則從遠程倉庫下載年碘。

如果設(shè)置為--prefer-online則優(yōu)先使用網(wǎng)絡(luò)數(shù)據(jù)澈歉,忽略緩存數(shù)據(jù),這種模式可以及時獲取最新的模塊屿衅。

--offline
完全離線模式闷祥,安裝過程不需要網(wǎng)絡(luò),直接使用匹配的緩存數(shù)據(jù)傲诵,一旦緩存數(shù)據(jù)不存在凯砍,則安裝失敗。

yarn global

不像 npm , 全局操作在使用 -g 或者 --global 標志的命令的時候執(zhí)行拴竹,Yarn 命令需要帶有 global 前綴悟衩。跟 npm 一樣,特定項目的依賴不需要全局安裝栓拜。

global 前綴只對 yarn add, yarn bin座泳,yarn ls 和 yara remove 有效。除了 yarn add幕与,這些命令跟 npm 的是等價的挑势。

yarn緩存命令

yarn cache 提供了三個命令,分別是yarn cache ls, yarn cache dir, yarn cache clean啦鸣。

yarn cache ls

列出當前緩存的包列表潮饱。

yarn cache dir

顯示緩存數(shù)據(jù)的目錄。

yarn cache clean

清除所有緩存數(shù)據(jù)诫给。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末香拉,一起剝皮案震驚了整個濱河市啦扬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌凫碌,老刑警劉巖扑毡,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異盛险,居然都是意外死亡瞄摊,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門苦掘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來换帜,“玉大人,你說我怎么就攤上這事鸟蜡。” “怎么了挺邀?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵揉忘,是天一觀的道長。 經(jīng)常有香客問我端铛,道長泣矛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任禾蚕,我火速辦了婚禮您朽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘换淆。我一直安慰自己哗总,他們只是感情好,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布倍试。 她就那樣靜靜地躺著讯屈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪县习。 梳的紋絲不亂的頭發(fā)上涮母,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天,我揣著相機與錄音躁愿,去河邊找鬼叛本。 笑死,一個胖子當著我的面吹牛彤钟,可吹牛的內(nèi)容都是我干的来候。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼逸雹,長吁一口氣:“原來是場噩夢啊……” “哼吠勘!你這毒婦竟也來了性芬?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤剧防,失蹤者是張志新(化名)和其女友劉穎植锉,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體峭拘,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡俊庇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了鸡挠。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辉饱。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖拣展,靈堂內(nèi)的尸體忽然破棺而出彭沼,到底是詐尸還是另有隱情,我是刑警寧澤备埃,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布姓惑,位于F島的核電站,受9級特大地震影響按脚,放射性物質(zhì)發(fā)生泄漏于毙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一辅搬、第九天 我趴在偏房一處隱蔽的房頂上張望唯沮。 院中可真熱鬧,春花似錦堪遂、人聲如沸介蛉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽甘耿。三九已至,卻和暖如春竿滨,著一層夾襖步出監(jiān)牢的瞬間佳恬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工于游, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留毁葱,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓贰剥,卻偏偏與公主長得像倾剿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 什么是 NPM npm之于Node前痘,就像pip之于Python,gem之于Ruby,composer之于PHP凛捏。 ...
    ihoey閱讀 6,248評論 2 36
  • npm是什么 NPM的全稱是Node Package Manager,是隨同NodeJS一起安裝的包管理和分發(fā)工具...
    build1024閱讀 7,860評論 0 9
  • 大家好示罗,我是IT修真院深圳分院第3期的學員,一枚正直純潔善良的前端程序員芝硬,今天給大家分享一下蚜点,修真院官網(wǎng)前端工程師...
    大大頭大閱讀 2,937評論 0 1
  • 2018-2 《槍炮病菌與鋼鐵》的作者戴蒙德說:“歷史上的國家和社會衰敗,更多的只是影響到自己拌阴。而今天任何一個國家...
    王賀8228閱讀 178評論 0 0
  • 今天2017年3月24 周五 北京有雨 今天是我第一次寫“簡書”完全是因為我親愛的同事劉姐的不斷推薦 我的同事劉姐...
    明媚的醒悟閱讀 141評論 0 0