1. 程式人生 > 實用技巧 >npm與yarn介紹與常用命令

npm與yarn介紹與常用命令

NPM介紹

  • npmnode.js的包管理器,用於node外掛管理(包括安裝,解除安裝,管理依賴等)

  • cnpm是淘寶團隊分享的使用國內映象來代替國外伺服器

  • 引數

    • -g引數

      • 全域性安裝(global),可以在命令列下直接使用
      • 可以通過npm root -g檢視全域性安裝的資料夾位置
    • -S引數

      --save安裝包資訊將加入到dependencies(生產階段的依賴)

    • -D引數

      --save--dev安裝包資訊將加入到devDependencies(開發階段的依賴)

    • i引數

  • npm init -f配置檔案初始化

  • npm -v檢視npm版本資訊

使用 npm 命令安裝模組

npm 安裝 Node.js 模組語法格式如下:

$ npm install <Module Name>

以下例項,我們使用 npm 命令安裝常用的 Node.js web框架模組 express:

$ npm install express

安裝好之後,express 包就放在了工程目錄下的 node_modules 目錄中,因此在程式碼中只需要通過 require('express') 的方式就好,無需指定第三方包路徑。

var express = require('express');

全域性安裝與本地安裝

npm 的包安裝分為本地安裝(local)、全域性安裝(global)兩種,從敲的命令列來看,差別只是有沒有-g而已,比如

npm install express      # 本地安裝
npm install express -g   # 全域性安裝

如果出現以下錯誤:

npm err! Error: connect ECONNREFUSED 127.0.0.1:8087 

解決辦法為:

$ npm config set proxy null
本地安裝
    1. 將安裝包放在./node_modules下(執行npm命令時所在的目錄),如果沒有node_modules目錄,會在當前執行npm 命令的目錄下生成node_modules目錄。
    1. 可以通過require()來引入本地安裝的包。
全域性安裝
    1. 將安裝包放在/usr/local

      (Linux)下或者你node的安裝目錄。

      Windows下的全域性安裝的預設地址C:\Users\XXX\AppData\Roaming\npm

    1. 可以直接在命令列裡使用。

如果你希望具備兩者功能,則需要在兩個地方安裝它或使用npm link

如何改變npm全域性安裝路徑?

  1. 使用命令的方式

    npm config set prefix '路徑'

  2. 修改npmrc檔案

    npmrcnode\node_modeules\npm

    npmrc檔案就是記錄npm全域性安裝的路徑。修改這個檔案就可以更改npm的全域性安裝路徑。注意:npmrc中設定的路徑必須和環境變數中的路徑保持一致

接下來我們使用全域性方式安裝express

$ npm install express -g

安裝過程輸出如下內容,第一行輸出了模組的版本號及安裝位置。

[email protected] node_modules/express
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
└── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected])

檢視安裝資訊

你可以使用以下命令來檢視所有全域性安裝的模組:

$ npm list -g

├─┬ [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
……

如果要檢視某個模組的版本號,可以使用命令如下:

$ npm list grunt

projectName@projectVersion /path/to/project/folder
└── [email protected]

使用 package.json

package.json位於模組的目錄下,用於定義包的屬性。接下來讓我們來看下express包的package.json檔案,位於 node_modules/express/package.json

Package.json 屬性說明

  • name - 包名。
  • version - 包的版本號。
  • description - 包的描述。
  • homepage - 包的官網 url 。
  • author - 包的作者姓名。
  • contributors - 包的其他貢獻者姓名。
  • dependencies - 依賴包列表。如果依賴包沒有安裝,npm 會自動將依賴包安裝在 node_module 目錄下。
  • repository - 包程式碼存放的地方的型別,可以是 git 或 svn,git 可在 Github 上。
  • main - main 欄位指定了程式的主入口檔案,require('moduleName') 就會載入這個檔案。這個欄位的預設值是模組根目錄下面的 index.js。
  • keywords - 關鍵字

解除安裝模組

$ npm uninstall express

解除安裝後,你可以到 /node_modules/ 目錄下檢視包是否還存在,或者使用以下命令檢視:

$ npm ls

更新模組

$ npm update express

搜尋模組

$ npm search express

Yarn

Yarn介紹

Yarn就是一個類似於npm的包管理工具,它是由facebook推出並開源。與npm相比,yarn有著眾多的優勢,主要的優勢在於:速度快、離線模式、版本控制。

Yarn 換源

使用yarn來安裝依賴時的體驗比npm要好很多;但是偶爾也會存在yarn源倉庫包下載不穩定的情況

// 檢視 yarn 配置
yarn config get registry
//或者
yarn config list

> registry: 'https://registry.yarnpkg.com'

一 臨時修改

yarn add 軟體名 --registry https://registry.npm.taobao.org/

二 全域性修改,安裝淘寶映象

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

三 使用第三方軟體快速修改、切換yarn映象源
yrm(YARN registry manager) 不僅可以快速切換映象源,還可以測試自己網路訪問不同源的速度

# 安裝 yrm
npm install -g yrm

# 列出當前可用的所有映象源
yrm ls

// npm -----  https://registry.npmjs.org/
// cnpm ----  http://r.cnpmjs.org/
// taobao --  https://registry.npm.taobao.org/
// nj ------  https://registry.nodejitsu.com/
// rednpm -- http://registry.mirror.cqupt.edu.cn
// skimdb -- https://skimdb.npmjs.com/registry
// yarn ----  https://registry.yarnpkg.com

# 使用淘寶映象源
yrm use taobao

# 測試訪問速度
yrm test taobao

YARN命令

  1. 版本檢視
yarn -v
  1. 建立新工程
yarn init # 初始化專案,生成 package.json 檔案(需要手動選擇配置)
  1. 新增依賴包
# 通過 yarn add 新增依賴會更新 package.json以及 yarn.lock 檔案

# 開發環境
yarn add <PackageName> # 依賴會記錄在 package.json 的 dependencies 下 開發環境

# 生產環境
yarn add <packageName> --dev # 依賴會記錄在 package.json 的 devDependencies 下 生產環境
  1. 安裝全域性依賴包
yarn global add <PackageName>
  1. 更新依賴包
yarn upgrade               # 升級所有依賴項,不記錄在package.json中
yarn upgrade <PackageName> # 升級指定包
yarn upgrade --latest      # 忽略版本規則,升級到最新版本,並且更新 package.json
  1. 移除依賴包
yarn remove <PackageName>
  1. 安裝package.json中的所有檔案

yarn或者yarn install

yarn install # 或者yarn在node_modules目錄安裝package.json中列出的所有依賴
yarn install --force # 強制下載安裝 如果 node_modules 中有相應的包則不會重新下載 --force 可以強制重新下載安裝
  1. 執行指令碼

yarn run用來執行在 package.json 中 scripts 屬性下定義的指令碼

// package.json
{
"scripts": {

"dev": "node app.js",

"start": "node app.js"
}
}
yarn run dev # yarn 執行 dev 對應的指令碼 node app.js
  1. 顯示某個包資訊
yarn info <packageName>        # 可以用來檢視某個模組的最新版本資訊
yarn info <packageName> --json # 輸出 json 格式
yarn info <packageName> readme # 輸出 README 部分
  1. 列出專案的所有依賴
yarn list          # 列出當前專案的依賴
yarn global list   # 列出全域性專案的依賴
  1. 管理 yarn 配置檔案
yarn config
yarn config set key value # 設定
yarn config get key       # 讀取值
yarn config delete key    # 刪除
yarn config list          # 顯示當前配置
yarn config set registry https://registry.npm.taobao.org # 設定淘寶映象
  1. 快取
yarn cache
yarn cache list  # 列出已快取的每個包
yarn cache dir   # 返回 全域性快取位置
yarn cache clean # 清除快取
  1. Yarn 獨有的命令
yarn licenses ls       # 允許你檢查依賴的許可資訊
yarn licenses generate # 自動建立依賴免責宣告 license
yarn why taco          # 檢查為什麼會安裝 taco,詳細列出依賴它的其他包
yarn why vuepress      # 檢查為什麼會安裝 vuepress,詳細列出依賴它的其他包

修改Yarn的全域性安裝和快取位置

  1. 修改全域性安裝位置

    • 改變 yarn 全域性安裝位置

      yarn config set global-folder <你的磁碟路徑>

      你會在你的使用者目錄找到 .yarnrc 的檔案,開啟它,找到 global-folder

  2. 改變 yarn 快取位置

    yarn config set cache-folder <你的磁碟路徑>

在我們使用全域性安裝包的時候,會在D:\Software\yarn\global下生成 node_modules\.bin 目錄

我們需要將D:\Software\yarn\global\node_modules\.bin整個目錄 新增到系統環境變數中去,否則通過yarn新增的全域性包 在命令列中是找不到的。

檢查當前yarnbin的位置

yarn global bin

檢查當前yarn的全域性安裝位置

yarn global dir

yarn的常用命令
修改Yarn的全域性安裝和快取位置