[nodejs] NodeJs/NPM入門教程

千千寰宇發表於2024-03-17

0 序

  • nodejs 是執行在伺服器端的js,常用於前端工程師在本地電腦、或生產環境部署除錯或執行前端工程。

  • 回想起來,上次使用nodejs,還在5年前做大學畢業設計時,基於前後端分離的實踐(那時,業界正在興起前後端分離的浪潮。當然了,現在的web工程,前後端分離已是預設的技術選擇了)

  • 這次重新開始接觸nodejs,是因為接觸到一個開源專案,其前端工程的部署,需要重拾nodejsnpm,有必要溫故下了。

  • 本文主要是基於參考文獻(第1/2篇)的筆記類博文(故:1、本文的目標讀者是博主自己;2、原創的智慧財產權參見,本文件的【參考文獻】章節)。

  • 本文主要測重在全面系統地從入門使用方面對nodejs講解以下。因此,不會講得特別深。

  • 好了,進入正題。

1 NodeJs 概述

1.1 簡介

  • 簡單的說 Node.js 就是執行在服務端的 JavaScript

  • Node.js 是一個基於 Chrome JavaScript 執行時建立的一個平臺。

  • Node.js 是一個事件驅動 I/O 服務端 JavaScript 環境,基於 Google 的 V8 引擎,V8 引擎執行 Javascript 的速度非常快,效能非常好。

  • 如果你是一個前端程式設計師,你不懂得像 PHP、Python 或 Ruby 等動態程式語言,然後你想建立自己的服務,那麼 Node.js 是一個非常好的選擇。

  • Node.js 是執行在服務端的 JavaScript,如果你熟悉 Javascript,那麼你將會很容易的學會 Node.js。

  • 當然,如果你是後端程式設計師,想部署一些高效能的服務,那麼學習 Node.js 也是一個非常好的選擇。

1.2 檢視版本

我們可以使用以下命令來檢視當前的 Node 版本:

$ node -v
v4.4.3

注意:不同版本間可能是有差異的。

1.3 第1個 Node.js 程式:Hello World!

  • 指令碼模式

https://www.runoob.com/try/runcode.php?filename=helloworld&type=nodejs

console.log("Hello World");

儲存該檔案,檔名為 helloworld.js, 並透過 node 命令來執行:

node helloworld.js

程式執行後,正常的話,就會在終端輸出: Hello World

  • 互動模式
    開啟終端,鍵入node進入命令互動模式,可以輸入一條程式碼語句後立即執行並顯示結果,例如:
$ node
> console.log('Hello World!');
Hello World!

gif動圖演示

2 Node.js 安裝配置

  • 本章節將向大家介紹在 WindowsLinux 上安裝 Node.js 的方法。

  • 本安裝教程以 Node.js v4.4.3 LTS(Long Term Support Edition, 長期支援版本)版本為例。

  • Node.js 安裝包原始碼下載地址為:https://nodejs.org/en/download

  • 你可以根據不同平臺系統選擇你需要的 Node.js 安裝包
  • Node.js 歷史版本下載地址:https://nodejs.org/dist/

注意:Linux 上安裝 Node.js 需要安裝 Python 2.62.7不建議安裝 Python 3.0 以上版本。

2.1 Windows 上安裝 Node.js

你可以採用以下兩種方式來安裝。

2.1.1 方式1:Windows 安裝包(.msi) [未親測]

本文例項以 v0.10.26 版本為例,其他版本類似, 安裝步驟:

  • 步驟 1 : 雙擊下載後的安裝包 v0.10.26,如下所示:

  • 步驟 2 : 點選以上的Run(執行),將出現如下介面:

  • 步驟 3 : 勾選接受協議選項,點選 next(下一步) 按鈕:

  • 步驟 4: Node.js預設安裝目錄為 "C:\Program Files\nodejs" , 你可以修改目錄,並點選 next(下一步):

  • 步驟 5 : 點選樹形圖示來選擇你需要的安裝模式 , 然後點選下一步 next(下一步)

  • 步驟6 : 點選 Install(安裝) 開始安裝Node.js。你也可以點選 Back(返回)來修改先前的配置。 然後並點選 next(下一步):

安裝過程:

點選 Finish(完成)按鈕退出安裝嚮導。

檢測PATH環境變數是否配置了Node.js:點選開始=>執行=>輸入"cmd" => 輸入命令"path",輸出如下結果:

PATH=C:\oraclexe\app\oracle\product\10.2.0\server\bin;C:\Windows\system32;
C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;
c:\python32\python;C:\MinGW\bin;C:\Program Files\GTK2-Runtime\lib;
C:\Program Files\MySQL\MySQL Server 5.5\bin;C:\Program Files\nodejs\;
C:\Users\rg\AppData\Roaming\npm

我們可以看到環境變數中已經包含了C:\Program Files\nodejs\

  • 檢查Node.js版本

2.1.2 方式2:Windows 二進位制檔案安裝 (.zip/.exe)

  • 安裝包
  • 32 位安裝包下載地址 : http://nodejs.org/dist/v0.10.26/node.exe
  • 64 位安裝包下載地址 : http://nodejs.org/dist/v0.10.26/x64/node.exe

https://nodejs.org/dist/v20.11.1/node-v20.11.1-win-x64.zip
(解壓即安裝)

  • 安裝步驟
  • 步驟 1 : 解壓即安裝

解壓目錄 : D:\Program_Files\nodejs\node-v20.11.1-win-x64

  • 步驟 2 : 為node.exe/npm.exe等程式配置環境變數Path

操作步驟:我的電腦-(右鍵)屬性-高階系統設定-環境變數-(選擇)Path-

D:\Program_Files\nodejs\node-v20.11.1-win-x64

  • 步驟 3 : cmd輸入 node 或者 雙擊下載的安裝包 node.exe ,將出現如下介面 :

點選 Run(執行)按鈕將出現命令列視窗:

  • 版本測試
    進入 node.exe 所在的目錄,如下所示:

如果你獲得以上輸出結果,說明你已經成功安裝了Node.js。

  • 進入、退出node命令視窗程序
# 進入 node 程序
node

# 退出 node 程序
process.exit()

2.2 Linux 上安裝 Node.js

2.2.1 方式1:直接使用已編譯好的包

Node 官網已經把 linux 下載版本更改為已編譯好的版本了,我們可以直接下載解壓後使用:

# wget https://nodejs.org/dist/v10.9.0/node-v10.9.0-linux-x64.tar.xz    // 下載
# tar xf  node-v10.9.0-linux-x64.tar.xz       // 解壓
# cd node-v10.9.0-linux-x64/                  // 進入解壓目錄
# ./bin/node -v                               // 執行node命令 檢視版本
v10.9.0

解壓檔案的 bin 目錄底下包含了 nodenpm 等命令,我們可以使用 ln 命令來設定軟連線:

ln -s /usr/software/nodejs/bin/npm   /usr/local/bin/ 
ln -s /usr/software/nodejs/bin/node   /usr/local/bin/

2.2.2 方式2:Ubuntu 原始碼安裝 Node.js

以下部分我們將介紹在 Ubuntu Linux 下使用原始碼安裝 Node.js 。 其他的 Linux 系統,如 Centos 等類似如下安裝步驟。

  • 在 Github 上獲取 Node.js 原始碼:
$ sudo git clone https://github.com/nodejs/node.git
Cloning into 'node'...
  • 修改目錄許可權:
$ sudo chmod -R 755 node
  • 使用 ./configure 建立編譯檔案,並按照:
$ cd node
$ sudo ./configure
$ sudo make
$ sudo make install
  • 檢視 node 版本:
$ node --version
v0.10.25

2.2.3 方式3:Ubuntu apt-get 命令安裝

  • 命令格式如下:
sudo apt-get install nodejs
sudo apt-get install npm

2.2.3 方式3:CentOS 下原始碼安裝 Node.js

  • 1、下載原始碼

你需要在https://nodejs.org/en/download/下載最新的Nodejs版本,本文以v0.10.24為例:

cd /usr/local/src/
wget http://nodejs.org/dist/v0.10.24/node-v0.10.24.tar.gz
  • 2、解壓原始碼
tar zxvf node-v0.10.24.tar.gz
  • 3、 編譯安裝
cd node-v0.10.24
./configure --prefix=/usr/local/node/0.10.24
make
make install
  • 4、 配置NODE_HOME,進入profile編輯環境變數
vim /etc/profile

設定 nodejs 環境變數,在 export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL 一行的上面新增如下內容:

#set for nodejs
export NODE_HOME=/usr/local/node/0.10.24
export PATH=$NODE_HOME/bin:$PATH

:wq儲存並退出,編譯 /etc/profile 使配置生效

source /etc/profile
  • 5、驗證是否安裝配置成功
node -v

輸出 v0.10.24 表示配置成功

npm模組安裝路徑

/usr/local/node/0.10.24/lib/node_modules/

注:Nodejs 官網提供了編譯好的 Linux 二進位制包,你也可以下載下來直接應用。

2.2.5 方式5:Mac OS 上安裝

你可以透過以下兩種方式在 Mac OS 上來安裝 node:

  • 1、在官方下載網站下載 pkg 安裝包,直接點選安裝即可。
  • 2、使用 brew 命令來安裝:
brew install node

3 基於nodejs快速建立應用

3.0 序

  • 如果我們使用 PHP 來編寫後端的程式碼時,需要 Apache 或者 NginxHTTP 伺服器,並配上 mod_php5 模組和 php-cgi
  • 從這個角度看,整個"接收 HTTP 請求並提供 Web 頁面"的需求就不需要 PHP 來處理。
  • 不過對 Node.js 來說,概念完全不一樣了。使用 Node.js 時,我們不僅僅 在實現一個應用,同時還實現了整個 HTTP 伺服器。事實上,我們的 Web 應用以及對應的 Web 伺服器(如:Apache Tomcat)基本上是一樣的。
  • 在我們建立 Node.js 第一個 "Hello, World!" 應用前,讓我們先了解下 Node.js 應用是由哪幾部分組成的:
  • require 指令:在 Node.js 中,使用 require 指令來載入和引入模組,引入的模組可以是內建模組,也可以是第三方模組或自定義模組。
  • 建立伺服器:伺服器可以監聽客戶端的請求,類似於 Apache 、Nginx 等 HTTP 伺服器。
  • 接收請求與響應請求 :伺服器很容易建立,客戶端可以使用瀏覽器或終端傳送 HTTP 請求,伺服器接收請求後返回響應資料。

3.1 建立 Node.js 應用

Step1 使用 require 指令來載入和引入模組

  • 語法格式如下:
const module = require('module-name');

其中,module-name 可以是一個檔案路徑(相對或絕對路徑),也可以是一個模組名稱。如果是一個模組名稱,Node.js 會自動從 node_modules 目錄中查詢該模組。
require 指令會返回被載入的模組的匯出物件,可以透過該物件來訪問模組中定義的屬性和方法,如果模組中有多個匯出物件,則可以使用解構賦值的方式來獲取它們。
我們使用 require 指令來載入 http 模組,並將例項化的 HTTP 賦值給變數 http,例項如下:

var http = require("http");

Step2 建立伺服器

  • 接下來我們使用 http.createServer() 方法建立伺服器,並使用 listen 方法繫結 8888 埠。 函式透過 request, response 引數來接收和響應資料。
  • 例項如下,在你專案的根目錄下建立一個叫 server.js 的檔案,並寫入以下程式碼:
var http = require('http');

http.createServer(function (request, response) {

    // 傳送 HTTP 頭部 
    // HTTP 狀態值: 200 : OK
    // 內容型別: text/plain
    response.writeHead(200, {'Content-Type': 'text/plain'});

    // 傳送響應資料 "Hello World"
    response.end('Hello World\n');
}).listen(8888);

// 終端列印如下資訊
console.log('Server running at http://127.0.0.1:8888/');

以上程式碼我們完成了一個可以工作的 HTTP 伺服器

  • 使用 node 命令執行以上的程式碼:
node server.js
Server running at http://127.0.0.1:8888/

  • 瀏覽器訪問

接下來,開啟瀏覽器訪問 http://127.0.0.1:8888/,你會看到一個寫著 "Hello World"的網頁。

分析Node.js 的 HTTP 伺服器:

  • 第一行請求(require)Node.js 自帶的 http 模組,並且把它賦值給 http 變數。
  • 接下來我們呼叫 http 模組提供的函式: createServer 。這個函式會返回 一個物件,這個物件有一個叫做 listen 的方法,這個方法有一個數值引數, 指定這個 HTTP 伺服器監聽的埠號。

gif動圖演示

3 NPM

3.1 簡介

  • NPM是隨同NodeJS一起安裝的包管理工具,能解決NodeJS程式碼部署上的很多問題,常見的使用場景有以下幾種:
  • 允許使用者從NPM伺服器下載別人編寫的第三方包到本地使用。
  • 允許使用者從NPM伺服器下載並安裝別人編寫的命令列程式到本地使用。
  • 允許使用者將自己編寫的命令列程式上傳到NPM伺服器供別人使用。
  • nodejs 與 npm

由於新版的nodejs已經整合了npm,所以之前npm也一併安裝好了。同樣可以透過輸入 "npm -v" 來測試是否成功安裝。命令如下,出現版本提示表示安裝成功:

$ npm -v
2.3.0
  • 如果你安裝的是舊版本的 npm,可以很容易得透過 npm 命令來升級,命令如下:
$ sudo npm install npm -g
/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
npm@2.14.2 /usr/local/lib/node_modules/npm

如果是 Window 系統使用以下命令即可:

npm install npm -g

使用淘寶映象的命令:

npm install -g cnpm --registry=https://registry.npmmirror.com

3.2 使用 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');

3.3 全域性安裝與本地安裝

  • 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 目錄。
  2. 可以透過 require() 來引入本地安裝的包。

全域性安裝

  1. 將安裝包放在 /usr/local 下或者你 node 的安裝目錄。
  2. 可以直接在命令列裡使用。

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

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

$ npm install express -g

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

express@4.13.3 node_modules/express
├── escape-html@1.0.2
├── range-parser@1.0.2
├── merge-descriptors@1.0.0
├── array-flatten@1.1.1
├── cookie@0.1.3
├── utils-merge@1.0.0
├── parseurl@1.3.0
├── cookie-signature@1.0.6
├── methods@1.1.1
├── fresh@0.3.0
├── vary@1.0.1
├── path-to-regexp@0.1.7
├── content-type@1.0.1
├── etag@1.7.0
├── serve-static@1.10.0
├── content-disposition@0.5.0
├── depd@1.0.1
├── qs@4.0.0
├── finalhandler@0.4.0 (unpipe@1.0.0)
├── on-finished@2.3.0 (ee-first@1.1.1)
├── proxy-addr@1.0.8 (forwarded@0.1.0, ipaddr.js@1.0.1)
├── debug@2.2.0 (ms@0.7.1)
├── type-is@1.6.8 (media-typer@0.3.0, mime-types@2.1.6)
├── accepts@1.2.12 (negotiator@0.5.3, mime-types@2.1.6)
└── send@0.13.0 (destroy@1.0.3, statuses@1.2.1, ms@0.7.1, mime@1.3.4, http-errors@1.3.1)

3.4 檢視安裝資訊

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

$ npm list -g

├─┬ cnpm@4.3.2
│ ├── auto-correct@1.0.0
│ ├── bagpipe@0.3.5
│ ├── colors@1.1.2
│ ├─┬ commander@2.9.0
│ │ └── graceful-readlink@1.0.1
│ ├─┬ cross-spawn@0.2.9
│ │ └── lru-cache@2.7.3
……

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

$ npm list grunt

projectName@projectVersion /path/to/project/folder
└── grunt@0.4.1

3.5 使用 package.json

package.json

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

{
  "name": "express",
  "description": "Fast, unopinionated, minimalist web framework",
  "version": "4.13.3",
  "author": {
    "name": "TJ Holowaychuk",
    "email": "tj@vision-media.ca"
  },
  "contributors": [
    {
      "name": "Aaron Heckmann",
      "email": "aaron.heckmann+github@gmail.com"
    },
    {
      "name": "Ciaran Jessup",
      "email": "ciaranj@gmail.com"
    },
    {
      "name": "Douglas Christopher Wilson",
      "email": "doug@somethingdoug.com"
    },
    {
      "name": "Guillermo Rauch",
      "email": "rauchg@gmail.com"
    },
    {
      "name": "Jonathan Ong",
      "email": "me@jongleberry.com"
    },
    {
      "name": "Roman Shtylman",
      "email": "shtylman+expressjs@gmail.com"
    },
    {
      "name": "Young Jae Sim",
      "email": "hanul@hanul.me"
    }
  ],
  "license": "MIT",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/strongloop/express.git"
  },
  "homepage": "http://expressjs.com/",
  "keywords": [
    "express",
    "framework",
    "sinatra",
    "web",
    "rest",
    "restful",
    "router",
    "app",
    "api"
  ],
  "dependencies": {
    "accepts": "~1.2.12",
    "array-flatten": "1.1.1",
    "content-disposition": "0.5.0",
    "content-type": "~1.0.1",
    "cookie": "0.1.3",
    "cookie-signature": "1.0.6",
    "debug": "~2.2.0",
    "depd": "~1.0.1",
    "escape-html": "1.0.2",
    "etag": "~1.7.0",
    "finalhandler": "0.4.0",
    "fresh": "0.3.0",
    "merge-descriptors": "1.0.0",
    "methods": "~1.1.1",
    "on-finished": "~2.3.0",
    "parseurl": "~1.3.0",
    "path-to-regexp": "0.1.7",
    "proxy-addr": "~1.0.8",
    "qs": "4.0.0",
    "range-parser": "~1.0.2",
    "send": "0.13.0",
    "serve-static": "~1.10.0",
    "type-is": "~1.6.6",
    "utils-merge": "1.0.0",
    "vary": "~1.0.1"
  },
  "devDependencies": {
    "after": "0.8.1",
    "ejs": "2.3.3",
    "istanbul": "0.3.17",
    "marked": "0.3.5",
    "mocha": "2.2.5",
    "should": "7.0.2",
    "supertest": "1.0.1",
    "body-parser": "~1.13.3",
    "connect-redis": "~2.4.1",
    "cookie-parser": "~1.3.5",
    "cookie-session": "~1.2.0",
    "express-session": "~1.11.3",
    "jade": "~1.11.0",
    "method-override": "~2.3.5",
    "morgan": "~1.6.1",
    "multiparty": "~4.1.2",
    "vhost": "~3.0.1"
  },
  "engines": {
    "node": ">= 0.10.0"
  },
  "files": [
    "LICENSE",
    "History.md",
    "Readme.md",
    "index.js",
    "lib/"
  ],
  "scripts": {
    "test": "mocha --require test/support/env --reporter spec --bail --check-leaks test/ test/acceptance/",
    "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --require test/support/env --reporter spec --check-leaks test/ test/acceptance/",
    "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --require test/support/env --reporter dot --check-leaks test/ test/acceptance/",
    "test-tap": "mocha --require test/support/env --reporter tap --check-leaks test/ test/acceptance/"
  },
  "gitHead": "ef7ad681b245fba023843ce94f6bcb8e275bbb8e",
  "bugs": {
    "url": "https://github.com/strongloop/express/issues"
  },
  "_id": "express@4.13.3",
  "_shasum": "ddb2f1fb4502bf33598d2b032b037960ca6c80a3",
  "_from": "express@*",
  "_npmVersion": "1.4.28",
  "_npmUser": {
    "name": "dougwilson",
    "email": "doug@somethingdoug.com"
  },
  "maintainers": [
    {
      "name": "tjholowaychuk",
      "email": "tj@vision-media.ca"
    },
    {
      "name": "jongleberry",
      "email": "jonathanrichardong@gmail.com"
    },
    {
      "name": "dougwilson",
      "email": "doug@somethingdoug.com"
    },
    {
      "name": "rfeng",
      "email": "enjoyjava@gmail.com"
    },
    {
      "name": "aredridel",
      "email": "aredridel@dinhe.net"
    },
    {
      "name": "strongloop",
      "email": "callback@strongloop.com"
    },
    {
      "name": "defunctzombie",
      "email": "shtylman@gmail.com"
    }
  ],
  "dist": {
    "shasum": "ddb2f1fb4502bf33598d2b032b037960ca6c80a3",
    "tarball": "http://registry.npmjs.org/express/-/express-4.13.3.tgz"
  },
  "directories": {},
  "_resolved": "https://registry.npmjs.org/express/-/express-4.13.3.tgz",
  "readme": "ERROR: No README data found!"
}

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 - 關鍵字

3.6 解除安裝模組

  • 我們可以使用以下命令來解除安裝 Node.js 模組。
$ npm uninstall express
  • 解除安裝後,你可以到 /node_modules/ 目錄下檢視包是否還存在,或者使用以下命令檢視:
$ npm ls

3.7 更新模組

我們可以使用以下命令更新模組:

$ npm update express

3.8 搜尋模組

使用以下來搜尋模組:

$ npm search express

3.9 建立模組

建立模組,package.json 檔案是必不可少的。我們可以使用 NPM 生成 package.json 檔案,生成的檔案包含了基本的結果。

$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg> --save` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
name: (node_modules) runoob                   # 模組名
version: (1.0.0) 
description: Node.js 測試模組(www.runoob.com)  # 描述
entry point: (index.js) 
test command: make test
git repository: https://github.com/runoob/runoob.git  # Github 地址
keywords: 
author: 
license: (ISC) 
About to write to ……/node_modules/package.json:      # 生成地址

{
  "name": "runoob",
  "version": "1.0.0",
  "description": "Node.js 測試模組(www.runoob.com)",
  ……
}


Is this ok? (yes) yes

以上的資訊,你需要根據你自己的情況輸入。在最後輸入 "yes" 後會生成 package.json 檔案。

  • 接下來我們可以使用以下命令在 【npm 資源庫】中註冊使用者(使用郵箱註冊):
$ npm adduser
Username: mcmohd
Password:
Email: (this IS public) mcmohd@gmail.com
  • 接下來我們就用以下命令來發布模組:
$ npm publish

如果你以上的步驟都操作正確,你就可以跟其他模組一樣使用 npm 來安裝。

3.10 版本號

  • 使用 NPM 下載和釋出程式碼時都會接觸到版本號。NPM 使用語義版本號來管理程式碼,這裡簡單介紹一下。

  • 語義版本號分為X.Y.Z三位,分別代表主版本號次版本號補丁版本號。當程式碼變更時,版本號按以下原則更新。

  • 如果只是修復bug,需要更新Z位。

  • 如果是新增了功能,但是向下相容,需要更新Y位。
  • 如果有大變動,向下不相容,需要更新X位。
  • 版本號有了這個保證後,在申明第三方包依賴時,除了可依賴於一個固定版本號外,還可依賴於某個範圍的版本號。例如"argv": "0.0.x"表示依賴於0.0.x系列的最新版argv。

NPM支援的所有版本號範圍指定方式可以檢視官方文件

3.11 NPM 常用命令

除了本章介紹的部分外,NPM還提供了很多功能,package.json裡也有很多其它有用的欄位。

除了可以在 npmjs.org/doc/ 檢視官方文件外,這裡再介紹一些NPM常用命令。

  • NPM提供了很多命令,例如install和publish,使用npm help可檢視所有命令。

  • NPM提供了很多命令,例如install和publish,使用npm help可檢視所有命令。

  • 使用npm help 可檢視某條命令的詳細幫助,例如npm help install。

  • 在package.json所在目錄下使用npm install . -g可先在本地安裝當前命令列程式,可用於釋出前的本地測試。

  • 使用npm update 可以把當前目錄下node_modules子目錄裡邊的對應模組更新至最新版本。

  • 使用npm update -g可以把全域性安裝的對應命令列程式更新至最新版。

  • 使用npm cache clear可以清空NPM本地快取,用於對付使用相同版本號釋出新版本程式碼的人。

  • 使用npm unpublish @可以撤銷釋出自己釋出過的某個版本程式碼。

X 參考文獻

  • 菜鳥教程
  • Node.js 教程 - 菜鳥教程
  • Node.js 安裝配置 - 菜鳥教程
  • NPM 使用介紹 - 菜鳥教程
  • nodejs 官網
  • https://nodejs.org/en/download
  • https://nodejs.org/dist/
  • nodejs 系列教程
  • https://www.cnblogs.com/johnnyzen/tag/nodejs/

相關文章