Node.js 系列學習日誌#24 - npm 相依套件指定版本與自動更新 package.json
在管理套件工具的版本時,在 package.json 檔案裡面有一個 dependencies 的部分,裡面包含著套件的名稱與版本號,今天要談的是版本號的指定。
而這個版本號的指定是有個規範,它是語意化版本 http://semver.org/lang/zh-TW/ 根據它作為版號的規則
版本格式:主版號.次版號.修訂號 也就是 Major.Minor.Path 的形式
- 主版號:當你做了不相容的 API 修改,
- 次版號:當你做了向下相容的功能性新增,
- 修訂號:當你做了向下相容的問題修正。
那麼在 package.json 檔案裡面的相依套件的版本要怎麼填呢?版本號的範圍?
- 1.2.3, = 1.2.3 : 指定版本 1.2.3
1.2.3 :大於 1.2.3
- <1.2.3 :小於 1.2.3
=1.2.3 :大於 1.2.3
- <=1.2.3:小於 1.2.3
- 1.2.3 - 2.3.4 :大於 1.2.3 且小於 2.3.4
- ~1.2.3 :合理接近 1.2.3 版本, 等價 >=1.2.3-0 <1.3.0-0
- ~1.2 :等價 >1.2.0-0 <1.3.0-0,也就是 1.2 版本的同樣等價於 1.2.x 版本奧
- ~1:等價於 >1.0.0-0 <2.0.0-0 ,也就是 1 開頭的版本等價於 1.x 版本號
- :任意版本
最上面的圖,使用了好幾種定義版本的方式,就以 * 的寫法風險也比較大一點,因為無法保證 npm 安裝的版本是最新的版本,最保守一點的就是直接指定版本號,而如何得知版本號,可以透過
1 | $npm info {套件名稱} version |
方式去做查詢。
介紹 autod
https://github.com/node-modules/autod
這是一個自動分析所有的文件,引入的模組不需要手動更新 package.json ,並且它會同時自動更新 package.json
先看一下有哪些的 help 可以使用
接著開始執行 autod 的指令,在這邊我下了一個 -e 把 public, view 忽略,另外 -w 讓這份 package.json 能夠自動更新寫入
原始的 package.json
自動修正後的 package.json
是不是有很大的不同呢,而且又能夠自動更新,試試看囉