npm學習總結

開始須要使用npm的了,以前學習時都只是圖快進行安裝,簡單總結下吧html

1、什麼是npm,爲何要npm

簡單說,npm是一個項目的JavaScript包管理工具,隨着項目愈來愈大,一個項目須要的包愈來愈多,若是每一個包都靠GitHub下載,引入,就會很浪費時間,同時也不利於記錄和管理
同時,npm更爲各軟件開發者提供分享和借鑑node

npm有如下三個部分組成:
網站,註冊表,命令行工具(CLI)
https://docs.npmjs.com/about-...npm

2、npm經過package.json管理包

一個項目下有一個package.json文件,此文件記錄了項目安裝的包,npm新裝的包會寫入此文件進行記錄,也能夠經過此文件的記錄安裝相應的包
舉例:json

{
  "name": "test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "babel-traverse": "^6.26.0",
    "lodash": "^4.17.11"
  }
}

此test項目中安裝了babel-traverse和lodash這兩個依賴,都記錄於dependencies中babel

3、npm簡單使用

1.初始化項目

初始化後,npm會建立package.json文件
這裏有兩個方法,其實只是有沒有默認配置的區別而已
法一:npm會一個一個詢問你項目信息工具

npm init

法二:npm會爲你作好默認配置學習

npm init --yes 或者  npm init --y

2.能夠安裝包了

這裏好比安裝babel-traverse:網站

npm install babel-traverse  //即npm install babel-traverse --save,若添加於開發環境,則選項爲--save-dev

此行命令會在node_modules(沒有則建立)中安裝babel-traverse,而且在package.json和package.lock.json(沒有則建立)的dependencies中記錄此包(後面解釋package.lock.json)
test/package.jsonspa

{
  "name": "test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "babel-traverse": "^6.26.0"
  }
}

注意到^,npm會匹配最新的大版本依賴包,好比"^6.26.0"會匹配全部6.x.x的包命令行

安裝完後咱們能夠看到node_modules中有babel-traverse文件夾,但爲何咱們只裝了babel-travers缺有那麼多其餘包呢,由於babel-traverse的開發也依賴了其餘包,進入babel-travers文件夾打開package.json能夠找到

"dependencies": {
    "babel-code-frame": "^6.26.0",
    "babel-messages": "^6.23.0",
    "babel-runtime": "^6.26.0",
    "babel-types": "^6.26.0",
    "babylon": "^6.18.0",
    "debug": "^2.6.8",
    "globals": "^9.18.0",
    "invariant": "^2.2.2",
    "lodash": "^4.17.4"
  }

npm也會安裝這些包,相應地,這些包也可能含有其餘包,所以會進行一個遞歸安裝

4、本地安裝與全局安裝

本地安裝即安裝依賴包

npm install <package_name>

全局安裝即將包做爲一個命令行工具,例如jshint

npm install -g <package_name>

具體不一樣參數可參考此連接:https://www.cnblogs.com/limit...

5、package.lock.json是什麼

前面講到安裝一個包時也會引入其餘包,package.lock.json就是用於描述這個樹形結構
clipboard.png

具體看官方描述:
https://docs.npmjs.com/files/...

相關文章
相關標籤/搜索