摘要:常見問(wèn)題的中的和會(huì)匹配最近的小版本依賴包,比如會(huì)匹配所有版本,但是不包括會(huì)匹配最新的大版本依賴包,比如會(huì)匹配所有的包,包括,但是不包括你也有可能會(huì)看見在中模塊的版本號(hào)前面既沒有也沒有就像下面那樣上面的情況屬于精確安裝模塊指定的版本號(hào)。
常見問(wèn)題 1.npm 的package.json中的~和^
~會(huì)匹配最近的小版本依賴包,比如~1.2.3會(huì)匹配所有1.2.x版本,但是不包括1.3.0
^會(huì)匹配最新的大版本依賴包,比如^1.2.3會(huì)匹配所有1.x.x的包,包括1.3.0,但是不包括2.0.0
你也有可能會(huì)看見在 package.json 中模塊的版本號(hào)前面既沒有 ~ 也沒有 ^ 就像下面那樣:
"moment": "2.4.0"
上面的情況屬于精確安裝模塊指定的版本號(hào)。通過(guò)命令參數(shù)-E,或者 --save-exact 來(lái)指定版本號(hào)安裝的。上述模塊對(duì)應(yīng)的精確安裝命令:npm install --save-exact moment@2.4.0
2.npm outdate與第三方工具npm-checknpm outdate此命令會(huì)列出項(xiàng)目中所有已經(jīng)過(guò)時(shí)的包,像下面一樣:
推薦使用檢查依賴包更強(qiáng)大的一個(gè)工具 npm-check,更強(qiáng)大分析包的能力以及可以通過(guò)加上參數(shù)提供交互式更新方式,詳情請(qǐng)參考其文檔說(shuō)明。安裝完成后npm-check檢查項(xiàng)目依賴包,展示像下面一樣:
3.dependencies or devDependencies or optionalDependenciesdependencies(生產(chǎn)環(huán)境的依賴的包目錄)devDependencies(開發(fā)環(huán)境的依賴包目錄)
在項(xiàng)目的 package.json 使用命令 npm install --save moduel安裝的模塊會(huì)注冊(cè)到 dependencies 目錄中去(npm 5 開始 通過(guò)npm install不加--save 和npm install --save一樣 都是局部安裝并會(huì)把模塊自動(dòng)寫入package.json中的dependencies里。)
npm install --dev module 并會(huì)安裝模塊并自動(dòng)寫入package.json中的 devDependencies 里。
當(dāng)你 clone 下來(lái)了一個(gè)新項(xiàng)目在項(xiàng)目根目錄下執(zhí)行npm install的時(shí)候是會(huì)同時(shí)安裝 dependencies 和 devDependencies中的所有依賴。當(dāng)你的項(xiàng)目需要在生產(chǎn)環(huán)境中只需要安裝 dependencies 中的依賴時(shí),執(zhí)行的是npm install --production命令。(如果配置了NODE_ENV環(huán)境變量為production,那么執(zhí)行npm install就只安裝dependencies里面的包。安裝完后可以用npm ls查看安裝的包的情況。)
With the --production flag (or when the NODE_ENV environment variable is set to production), npm will not install modules listed in devDependencies.
此外,你還有可能看到形如:
"optionalDependencies": { "gulp": "^3.9.1" }
optionalDependencies 是你在使用npm install npm install --save-optional gulp是所注冊(cè)在可選依賴?yán)锏哪K包,在項(xiàng)目執(zhí)行npm install --no-optional就可以跳過(guò)可選包安裝。
Tips : 在存在 package-lock.json 時(shí)npm install --no-optional你可能會(huì)發(fā)現(xiàn)依舊裝上了可選模塊,(它的issue頁(yè)討論),此時(shí)你可能還要加上另外一個(gè)參數(shù)執(zhí)行npm install --no-optional --no-package-lock才能如愿。
4.npm config查看和管理npm的基礎(chǔ)配置。npm config ls -l
可以通過(guò)npm config get proxy查看你是否設(shè)置了npm 的代理。
npm config set registry https://registry.npm.taobao.org 改成更快的淘寶源,解決出現(xiàn)安裝不了模塊或者速度慢的問(wèn)題。
當(dāng)你使用命令 npm config get cache命令時(shí) 你會(huì)得到你的本地 npm 緩存的完整路徑,npm 緩存是什么呢,可以先從npm install的執(zhí)行過(guò)程說(shuō)起(此部分參考阮一峰老師的博客):
發(fā)出npm install命令
npm 向 registry 查詢模塊壓縮包的網(wǎng)址
下載壓縮包,存放在~/.npm(本地NPM緩存路徑)目錄
解壓壓縮包到當(dāng)前項(xiàng)目的node_modules目錄
實(shí)際上說(shuō)一個(gè)模塊安裝以后,本地其實(shí)保存了兩份。一份是~/.npm目錄下的壓縮包,另一份是node_modules目錄下解壓后的代碼。但是,運(yùn)行npm install的時(shí)候,只會(huì)檢查 node_modules 目錄,而不會(huì)檢查~/.npm目錄。如果一個(gè)模塊在~/.npm下有壓縮包,但是沒有安裝在node_modules目錄中,npm 依然會(huì)從遠(yuǎn)程倉(cāng)庫(kù)下載一次新的壓縮包。
阮老師在當(dāng)時(shí)文中提到的離線安裝時(shí)所說(shuō)的有很多弊端的npm install --cache-min命令已經(jīng)在npm 5.0.0開始被 deprecated 了
--cache-min and --cache-max have been deprecated. (#15666)
我們想利用已經(jīng)在緩存中之前已經(jīng)備份的模塊實(shí)現(xiàn)離線模塊安裝的的 cache 機(jī)制已經(jīng)在V5的時(shí)候重寫了,緩存將由 npm 來(lái)全局維護(hù)不再需要開發(fā)人員操心,離線安裝時(shí)將不再嘗試連接網(wǎng)絡(luò),而是降級(jí)嘗試從緩存中讀取,或直接失敗。就是如果你 offline ,npm將無(wú)縫地使用您的緩存。以下新增參數(shù)命令翻譯自npm v5.0.0的release
一個(gè)新的--prefer-offline選項(xiàng)將使npm跳過(guò)任何有條件的請(qǐng)求(304檢查)過(guò)時(shí)的緩存數(shù)據(jù),并且只有在緩存中丟失了某些內(nèi)容時(shí)才能訪問(wèn)網(wǎng)絡(luò)
一個(gè)新的--prefer-online選項(xiàng),它將強(qiáng)制 npm 重新驗(yàn)證緩存數(shù)據(jù)(使用304次檢查),忽略任何過(guò)時(shí)檢查,并用重新驗(yàn)證的新數(shù)據(jù)刷新緩存。
一個(gè)新的 --offline 選項(xiàng)將強(qiáng)制npm使用緩存或退出。如果試圖安裝的任何內(nèi)容尚未存在于緩存中,它將報(bào) ENOTCACHED錯(cuò)誤。
一個(gè)新的npm cache verify命令,它將對(duì)你的緩存進(jìn)行辣雞回收,減少不需要的東西占據(jù)的磁盤使用量,并且會(huì)對(duì)索引和內(nèi)容進(jìn)行全面的完整性驗(yàn)證。
6.package-lock.json 問(wèn)題項(xiàng)目中如果是用 npm V5 以上版本就會(huì)有這么一個(gè)詳細(xì)記錄安裝模塊的細(xì)節(jié)的文件。確定當(dāng)前安裝的包的依賴,以便后續(xù)重新安裝的時(shí)候生成相同的依賴,而忽略項(xiàng)目開發(fā)過(guò)程中有些依賴已經(jīng)發(fā)生的更新。
當(dāng)你想通過(guò)搜索引擎了解package-lock.json 問(wèn)題的時(shí)候,你可能會(huì)被“坑”字吸引過(guò)去,你可能會(huì)看到過(guò)“如果手動(dòng)修改了 package.json 文件中已有模塊的版本,直接執(zhí)行npm install不會(huì)安裝新指定的版本,只能通過(guò)npm install xxx@yy更新” ,不過(guò)這是 V5.0.0 的問(wèn)題,現(xiàn)在V5.4.2版本后如果改了package.json,且package.json和lock文件不同,那么執(zhí)行npm i時(shí)npm會(huì)根據(jù)package中的版本號(hào)以及語(yǔ)義含義去下載最新的包,并更新至lock。詳見這個(gè)知乎回答。
其余常見命令npm ls 查看安裝的模塊
npm uninstall 卸載模塊
npm update 更新模塊
npm help 查看某條命令的詳細(xì)幫助
npm version 查看模塊版本
npm view 查看模塊的注冊(cè)信息
npm publish 發(fā)布模塊
npm adduser 用戶登錄
npm init 初始化項(xiàng)目,并在項(xiàng)目文件夾中引導(dǎo)創(chuàng)建一個(gè)package.json文件
npm root 查看包的安裝路徑
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/93234.html
摘要:如果說(shuō)用一句話來(lái)概括那就是它開啟了服務(wù)器端語(yǔ)言。系列的文章并不會(huì)從一開始長(zhǎng)篇概論的講的歷史,安裝,以及其他很瑣碎的事情。只會(huì)專門介紹關(guān)于或者準(zhǔn)確來(lái)講是關(guān)于的敏捷開發(fā)。性能不對(duì)已有的特性進(jìn)行二次抽象,我們只是在它之上擴(kuò)展了應(yīng)用所需的基本功能。 如果說(shuō)用一句話來(lái)概括Node那就是:它開啟了JavaScript服務(wù)器端語(yǔ)言。 Node系列的文章并不會(huì)從一開始長(zhǎng)篇概論的講Node的歷史,安裝,...
摘要:引言學(xué)生管理系統(tǒng)昨日正式上線測(cè)試,上線遇到的問(wèn)題不少,但最后都完美解決了。前臺(tái)上線,瀏覽器端訪問(wèn)服務(wù)器卻得到了,查看相關(guān)日志后發(fā)現(xiàn)是訪問(wèn)文件時(shí)遭到了拒絕。不足當(dāng)時(shí)忙著上線,中默認(rèn)也啟用了路由,就以為路由是正統(tǒng)的解決方案。 引言 Alice學(xué)生管理系統(tǒng)昨日正式上線測(cè)試,上線遇到的問(wèn)題不少,但最后都完美解決了。 特此分享,一起爬坑。 項(xiàng)目?jī)?yōu)化 登錄頁(yè)美化 原來(lái)的登錄頁(yè)采用的是黑背景,經(jīng)過(guò)大...
摘要:添加依賴到如何使用依賴當(dāng)你再興建一個(gè)文件的時(shí)候,就不需要一個(gè)個(gè)插件安裝了,將文件復(fù)制到當(dāng)前文件下,并輸入,即通過(guò)里的依賴關(guān)系,自動(dòng)把依賴安裝好了。第四步新建配置文件默認(rèn)的配置文件在項(xiàng)目目錄下為。 WilsonLius blog 首發(fā)地址 前言 早就想嘗試webpack的,卻一直沒有時(shí)間,恰逢周末,又時(shí)值最近在公司實(shí)習(xí)的時(shí)候嘗到用fekit做模塊化的構(gòu)建工具的爽。所以就開始以公司的項(xiàng)目結(jié)...
摘要:網(wǎng)站的遷移遷移主要用到了命令,當(dāng)然網(wǎng)站小文件比較多的情況下例如,那么最好先打包在遠(yuǎn)程拷貝,速度會(huì)快很多。但是在服務(wù)器上安裝的時(shí)候死活提示缺少依賴。 從 vultr 遷移到 digitalocean 幾個(gè)月前收到 digitalocean 發(fā)來(lái)的郵件,說(shuō)因?yàn)槲已?qǐng)用戶注冊(cè)并達(dá)到他的要求,送了我50刀的額度,本來(lái)就沒想到它能送,結(jié)果不久之前它又送了一次,果斷讓我產(chǎn)生了回到它的懷抱的念頭,...
摘要:非阻塞模型這種也很好理解,由阻塞的死等系統(tǒng)響應(yīng)進(jìn)化成多次調(diào)用查看數(shù)據(jù)就緒狀態(tài)。復(fù)用模型,以及它的增強(qiáng)版就屬于該種模型。此時(shí)用戶進(jìn)程阻塞在事件上,數(shù)據(jù)就緒系統(tǒng)予以通知。信號(hào)驅(qū)動(dòng)模型應(yīng)用進(jìn)程建立信號(hào)處理程序時(shí),是非阻塞的。 引言 之前的兩篇文章 FastThreadLocal怎么Fast?、ScheduledThreadPoolExecutor源碼解讀 搞的我心力交瘁,且讀源碼過(guò)程中深感功...
閱讀 3046·2023-04-26 02:27
閱讀 2763·2021-11-22 13:54
閱讀 902·2021-11-12 10:36
閱讀 3753·2021-10-09 09:44
閱讀 3178·2021-10-09 09:41
閱讀 1223·2021-09-22 10:02
閱讀 2833·2019-08-30 15:56
閱讀 3104·2019-08-30 11:02