npm與package.json

【背景介紹】【知識剖析】【常見問題】【解決方案】【編碼實戰】【擴展思考】【更多討論】【參考文獻】html

八個方面深度解析前端知識/技能,本篇分享的是:前端

【npm與package.json】node

今天給你們分享的內容是,什麼是npm與package.json?
1.背景介紹
NPM是什麼?
NPM(node package manager),一般稱爲node包管理器。顧名思義,它的主要功能就是管理node包,包括:安裝、卸載、更新、查看、搜索、發佈等。
npm的背後,是基於couchdb的一個數據庫,詳細記錄了每一個包的信息,包括做者、版本、依賴、受權信息等。它的一個很重要的做用就是:將開發者從繁瑣的包管理工做(版本、依賴等)中解放出來,更加專一於功能的開發。數據庫

咱們須要瞭解什麼?
1.npm的安裝、卸載、升級、配置
2.npm的使用:package的安裝、卸載、升級、查看、搜索、發佈
3.npm包的安裝模式:本地 vs 全局
4.package.json:包描述信息
5.package版本:常見版本聲明形式npm

2.知識剖析
npm包安裝模式:
node包的安裝分兩種:本地安裝、全局安裝。二者的區別以下:
本地安裝:npm install pkg,package會被下載到當前所在目錄,也只能在當前目錄下使用。
全局安裝:npm install -g pkg,package會被下載到到特定的系統目錄下,安裝的package可以在全部目錄下使用json

經過package.json進行安裝:
若是咱們的項目依賴了不少package,一個一個地安裝那將是個體力活。咱們能夠將項目依賴的包都在package.json這個文件裏聲明,而後一行命令搞定
npm install安全

其餘package安裝命令
運行以下命令,列出全部npm install可能的參數形式:ui

npm install --help
npm uninstall pkg:卸載
npm ls:查看當前目錄安裝了哪些package
npm info pkg:查看特定package的詳細信息
npm update pkg:package更新
npm search pgk:搜索編碼

NPM配置
npm的配置工做主要是經過npm config命令,主要包含增、刪、改、查幾個步驟,下面就以最爲經常使用的proxy配置爲例:url

設置proxy:npm set prox
查看proxy:npm get proxy
刪除proxy:npm delete proxy
查看全部配置:npm config list
直接修改配置文件:npm config edit

3.常見問題
什麼是package.json?

4.解決方案
假設當咱們下載了node應用,這個node應用依賴於A、B、C三個包,若是沒有package.json,咱們須要人肉安裝這個三個包(若是對版本有特定要求就更悲劇了):

npm install A
npm install B
npm install C

有了package.json,一行命令安裝全部依賴。
npm install

5.編碼實戰
npm 容許在package.json文件裏面,使用scripts字段定義腳本命令。
"scripts": {"build": "node build.js"}
上面代碼是package.json文件的一個片斷,裏面的scripts字段是一個對象。它的每個屬性,對應一段腳本。好比,build命令對應的腳本是node build.js.
命令行下使用npm run命令,就能夠執行這段腳本。
npm run build
node build.js

6.擴展思考
package.json字段簡介

package.json中最重要的屬性是name和version兩個屬性,這兩個屬性是必需要有的,不然模塊就沒法被安裝,這兩個屬性一塊兒造成了一個npm模塊的惟一標識符。模塊中內容變動的同時,模塊版本也應該一塊兒變化。

name屬性就是你的模塊名稱,下面是一些命名規則:
1.必須小於等於214個字節,包括前綴名稱在內(如 x/xmodule)。
2.name屬性會成爲模塊url、命令行中的一個參數或者一個文件夾名稱,任何非url安全的字符在name中都不能使用,也不能以"_"或"."開頭,不能含有大寫字母
3.不要使用和node核心模塊同樣的名稱,明早不要含有"js"和"node"。
4.name屬性也許會被寫在require()的參數中,因此最好取個簡短而語義化的值。
5.建立一個模塊前能夠先到https://www.npmjs.com查查name是否已經被佔用.

version:
package的版本,當package發生變化時,version也應該跟着一塊兒變化,同時,version必須能夠被npm依賴的一個node-semver模塊解析。

description:
package的應用依賴模塊,即別人要使用這個package,至少須要安裝哪些東東。應用依賴模塊會安裝到當前模塊的node_modules目錄下。

devDependencies:
package的開發依賴模塊,即別人要在這個package上進行開發。

常見版本聲明形式:
1."~1.2.3" 是神馬意思呢:
"~1.2.3" = ">=1.2.3 <1.3.0"

2."1.x.x"是什麼意思呢:
"1.2.x" = ">=1.2.0 <1.3.0"

3.~version "約等於",^version "兼容版本

7.參考文獻
npm package.json屬性詳解:http://www.cnblogs.com/tzyy/p/5193811.html

PPT:http://localhost:63341/PPT/PPT/JS-11-npm%E4%B8%8Epackage.json.html#/
視頻:https://v.qq.com/x/page/w0539du6802.html

更多內容,能夠加入IT交流羣565734203與你們一塊兒討論交流

相關文章
相關標籤/搜索