NPM 的全名是 Node Package Manger, 是Node.js 的套件管理系統, 用來管理其背後龐大的開放原始碼, 透過NPM 我們可以很方便地加入第三方開發的套件到我們的專案裡, 縮短開發時間而這也是使用Node.js 開發應用程式的優點 (其實有點像 .Net 的NuGet, 或是 Python 的 Pypi),
如何安裝套件
> npm install simple-export-excel --save
simple-export-excel 即我們要下載的套件如果想要全域安裝而不是侷限在某個專案裡我們可以使用-g參數
> npm install -g "你的套件名稱"
如何使用套件
使用的時候就呼叫 require 把剛剛下載的套件匯入專案
var xlsHelper = require("simple-export-excel")
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var xls = require('simple-export-excel'); | |
var headers = | |
[ | |
[ | |
"item", "price" | |
], | |
[ | |
"name", "id" | |
] | |
] | |
var data = [ | |
[ | |
{ | |
'item':'apple', | |
'price':1000 | |
}, | |
{ | |
'item':'banana', | |
'price':1000 | |
} | |
],//sheet 1 | |
[ | |
{ | |
'name':'andy', | |
'id':112 | |
}, | |
{ | |
'name':'bob', | |
'id':90, | |
} | |
]//sheet 2 | |
] | |
var ret = xls.exportXls( headers, data); | |
var fs = require('fs'); | |
fs.writeFileSync('C:\\Users\\andyl\\Documents\\test.xlsx',ret,'binary') |
Package.json
Package.json是用來表示這個專案的相關資訊
像是名稱, 版本, 以及相依的套件(dependencies)等等
如果安裝套件的時候有帶 --save 的指令的話, 套件資訊就會被寫入到 dependencies
{
"name": "node",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"simple-export-excel": "^1.0.3"
}
}
因為有Package.json紀錄相依套件的資訊, 所以在部屬時可以不用特地把node_modules裡的所有東西連帶地一起複製到production server,
只要使用npm install
相依的套件就會被安裝
Package-lock.json
在NPM 5以前,
若使用NPM 安裝套件, 除了指定套件會被安裝之外, 其相依的套件也會跟著被安裝, 但是這些相依套件的版本資訊並沒有被特別紀錄起來, 當被安裝的相依套件不相容於目前套件時, 就會導致指定套件無法被使用
所以NPM5之後, 為了避免以上的問題發生
做完npm install 之後, 資料夾內會多一個用來紀錄相依套件資訊的package-lock.json
Semantic versioning(SEMVER)
Semantic versioning是NPM上用來管理套件版本的規則
當大家都遵守這規則的話, 我們就很容易判別如果相依套件有新版的話是否要進行更新
MajorVersion.MinorVersion.Patch
Patch: 指的是當我們修了某些bug時, 通常我們會更新這邊的數字
Minor Version: 則是有新功能加入但不會影響原本的功能時, 我們會更新這邊的數字, 也就是更新之後也不會有任何side effect
Major Version: 則是更新之後可能會有些功能不能用, 也就是說如果你有一套件它的最新版的Major Version比目前還大, 此時可能要思考一下更新後會不會影響到原本的程式
更新套件
實際上我們可以使用npm outdated來檢查是否有需要的套件要更新
如果需要更新可以
> npm update
如果你覺得自己開發到套件可以幫助到其他人, 那你也可以選擇發布你的套件讓其他人使用
如果第一次使用的話需要加入使用者
> npm adduser
接著, npm使用者登陸
> npm login
套件進版
> npm version minor
或是你也可以直接編輯Package.json來進版
上傳
> npm publish
留言
張貼留言