早上起來就看到新版釋出的消息,不過有幾個特別的地方,稍微註記一下。
首先 v0.8.17 有特別要處理一個安全性(Integer overflow)問題,如果有使用到 TypedArrays 的使用者,請儘速升級到這個版號。
另外,是伴隨著一起升版的 npm,從 1.2.0 之後加入了 peerDependencies 的新功能,有興趣的可以先看一下先前成員們的討論串:
其實我看不太懂(炸),不過去翻了一下討論列到的文章&範例,看起來像是為了處理擴充(plugin)而延伸出來的東西。一樣是 在 package.json 裡使用peerDependeicies來定義,而列在上面的套件,安裝時會變成同層而不是從屬(sliding not child),而且會顯示錯誤如果安裝失敗。
// 如果你定義這樣
{
"name": "pkgB",
"version": "0.0.1",
"dependencies": {
"oauth": "*"
},
"peerDependencies": {
"express": "3.0.x"
}
}
{
"name": "pkgC",
"version": "0.0.2",
"dependencies": {
"passport": "*",
},
"peerDependencies": {
"express": "3.0.x"
}
}
// 然後另一個套件
{
"name": "pkgA",
"dependencies": {
"pkgB": "~0.0.1",
"pkgC": "~0.0.2"
}
}
// 安裝之後會變這樣
{
"name": "pkgA",
"version": "0.0.1",
"dependencies": {
"pkgB": {
"version": "0.0.1",
"dependencies": {
"oauth": {
"version": "0.9.8"
}
}
},
"pkgC": {
"version": "0.0.2",
"dependencies": {
"passport": {
"version": "0.1.15"
}
}
},
"express": {
"version": "1.1.0"
}
}
}
有看出端倪嗎 :p express 被拉到 pkgA 套件相依的第一層,而不是在 pkgB 之下,這樣對於 plugin 的開發/測試將會更方便。@indexzero 有特別提到一點,這樣也可以順便把套件相依的關係拆的更細。有點像是達到繼承的效果,對於都是 express 的 plugin,就不需要各自擁有一份,每個 plugin 都可以直接使用同個 express。
想用新功能,請認明 >nodejs 0.8.17 || >npm 1.2.0,Enjoy!
** Update: 作者有親自寫了一篇更詳細的說明**