2014年10月11日 星期六

『Node.js』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 安裝的版本是最新的版本,最保守一點的就是直接指定版本號,而如何得知版本號,可以透過

$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



是不是有很大的不同呢,而且又能夠自動更新,試試看囉  

參考資料:
http://semver.org/lang/zh-TW/
http://blog.eisneim.com/articles/2014-7-5-meaning-of-npm-bower-version-prefix.html
https://cnodejs.org/topic/52dcc0a578990b04112e2f09

沒有留言:

張貼留言