npm stands for "Node Package Manager"
10年積累的網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先做網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有夏河免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
包管理器可以把庫,框架作為 Nodejs 模塊引入。
package.json
文件是所有 Node.js 項(xiàng)目和 npm 包的樞紐,它存儲(chǔ)項(xiàng)目的相關(guān)信息。 它由單個(gè) JSON 對(duì)象組成,并以鍵值對(duì)的形式存儲(chǔ)項(xiàng)目信息, 且至少包含兩個(gè)必填字段:“name”和“version”——但是最好提供有關(guān)項(xiàng)目的其他信息,這將對(duì)用戶或者維護(hù)者有所幫助。
在這個(gè)文件中最常見的信息之一是 author
字段, 它說明了項(xiàng)目的創(chuàng)建者,它可以是字符串,也可以是帶有聯(lián)系人詳細(xì)信息的對(duì)象。 對(duì)于較大的項(xiàng)目,建議使用對(duì)象;比如下面的例子:
"author": "Mitchell"
注意: 正在修改的是一個(gè) JSON,所有的字段名必須用雙引號(hào)(")包裹,也必須用逗號(hào)(,)分割。
一個(gè)完整的 package.json 文件的下一部分就是 description
字段——簡(jiǎn)短精悍的的項(xiàng)目描述。
如果計(jì)劃將來把這個(gè)包發(fā)布到 npm,請(qǐng)注意 description 字段的作用是告知用戶這個(gè)包的用途,這樣用戶就可以決定是否要安裝。 然而,這并不是使用描述的唯一場(chǎng)景:它也是一種很好的總結(jié)項(xiàng)目的方式, 可以幫助其它開發(fā)者、維護(hù)者甚至自己在未來快速地了解項(xiàng)目,對(duì)于任何一個(gè) Node.js 項(xiàng)目來說都非常重要。
無論項(xiàng)目計(jì)劃是什么,都建議使用描述。 類似這樣:
"description": "A project that does something awesome
在 keywords
字段中可以使用相關(guān)的關(guān)鍵字描述項(xiàng)目。 下面是一個(gè)示例:
"keywords": [ "descriptive", "related", "words" ],
這個(gè)字段的結(jié)構(gòu)是一個(gè)由雙引號(hào)字符串組成的數(shù)組。
給 package.json 添加許可證
license
字段將告知用戶允許他們拿這個(gè)項(xiàng)目干什么。
開源項(xiàng)目常見的協(xié)議有 MIT 和 BSD 等。 許可證信息并不是必須的。 大多數(shù)國家的版權(quán)法會(huì)默認(rèn)開發(fā)者擁有自己創(chuàng)作的作品的所有權(quán)。 但是,明確說明用戶可以做什么和不能做什么會(huì)是一個(gè)很好的做法。 這里有一個(gè) license 字段的例子:
"license": "MIT",
version
是 package.json 文件中必填字段之一, 這個(gè)字段描述了當(dāng)前項(xiàng)目的版本, 下面是一個(gè)示例:
"version": "1.2.0",
強(qiáng)大的依賴管理特性是使用包管理器的重要原因之一。 每當(dāng)在新的計(jì)算機(jī)上開始一個(gè)項(xiàng)目時(shí),無需手動(dòng),npm 會(huì)自動(dòng)安裝所有的依賴項(xiàng)。 但是 npm 如何準(zhǔn)確地知道項(xiàng)目需要哪些依賴呢? 來看看 package.json 文件中 dependencies
這一部分。在這部分,需要按照下面這種格式來存儲(chǔ)依賴包:
"dependencies": {
"package-name": "version",
"express": "4.14.0"
}
在 package.json 文件的依賴項(xiàng)中,npm 包的 Versions
遵循語義化版本(SemVer,Semantic Versioning),它是一種旨在使管理依賴項(xiàng)更加容易的軟件版本控制的行業(yè)標(biāo)準(zhǔn)。 在 npm 上發(fā)布的庫、框架或其它工具都應(yīng)該使用語義化版本,以便讓用戶清晰地知道如果項(xiàng)目升級(jí)將帶來哪些改變。在使用外部依賴項(xiàng)(大多數(shù)情況都是這樣)進(jìn)行軟件開發(fā)時(shí),了解語義化版本會(huì)很有用。 這些數(shù)字保存著項(xiàng)目的偶然發(fā)生的破壞性改變,不會(huì)讓人對(duì)項(xiàng)目昨天還正常,今天卻無法運(yùn)行而百思不解。 根據(jù)官網(wǎng),這是語義化版本的工作方式:
"package": "MAJOR.MINOR.PATCH"
當(dāng)做了不兼容的 API 修改,應(yīng)該增加主版本號(hào)(MAJOR); 當(dāng)新增了向下兼容的新功能時(shí),應(yīng)該增加次版本號(hào)(MINOR); 當(dāng)修復(fù)了向下兼容的 bug 時(shí),應(yīng)該增加修訂號(hào)(PATCH)。 這意味著修訂號(hào)是用來修復(fù)錯(cuò)誤的,次版本號(hào)則是添加了新功能,但它們都沒有破壞之前的功能。 主版本號(hào)(MAJOR)是添加了不兼容早期版本的更改。
如果想讓項(xiàng)目各個(gè)部分保持相互兼容,鎖定依賴包版本是一個(gè)行之有效的辦法。 但是大多數(shù)情況下,并不希望錯(cuò)過依賴項(xiàng)的問題修復(fù),因?yàn)樗鼈兺ǔ0匾陌踩a(bǔ)丁,而且它們理論上也會(huì)兼容我們既有的代碼。
可以在依賴項(xiàng)的版本號(hào)前加一個(gè)波浪號(hào)(~
),以讓 npm 依賴項(xiàng)更新到最新的修訂版。 這里有一個(gè)允許升級(jí)到任何 1.3.x 的例子:
"package": "~1.3.8"
和上一個(gè)挑戰(zhàn)中我們學(xué)到的用波浪號(hào)來安裝最新的修訂版依賴一樣,脫字符(^
)也允許 npm 來安裝功能更新。 它們的不同之處在于:脫字符允許次版本和修訂版更新。
"package": "^1.3.8"
這會(huì)將依賴包更新到任意的 1.x.x 版本。
直接刪除鍵值對(duì)即可,注意逗號(hào)的數(shù)量