npm5.0新增package-lock.json文件挖的坑

1、從package.json提及

什麼是 package.json 簡單地說:就是管理 npm 包的文件,包含了項目所依賴的 npm 包、項目的配置信息。
建立方式:npm init 按照系統提示填寫相關信息便可(回車設置爲空)。
具體配置說明,詳見 package.json 字段全解node

2、npm 5.0 的變化

升級了 Node.js v8.0 後,自帶的 npm 也升級到了 5.0,那麼 npm5 有什麼變化呢?git

使用 npm install xxx 命令安裝模塊時,再也不須要 –save 選項,會自動將模塊依賴信息保存到 package.json 文件;
安裝模塊操做(改變 node_modules 文件夾內容)會生成或更新 package-lock.json 文件
發佈的模塊不會包含 package-lock.json 文件
若是手動修改了 package.json 文件中已有模塊的版本,直接執行 npm install 不會安裝新指定的版本,只能經過 npm install name@version 更新github

3、package-lock.json 的含義 & npm5 的坑

咱們先來看一段官方解釋npm

package-lock.json is automatically generated for any operations where npm modifies either the node_modules tree, or package.json. It describes the exact tree that was generated, such that subsequent installs are able to generate identical trees, regardless of intermediate dependency updates.

大體意思:
package-lock.json 是當 node_modulespackage.json 發生變化時自動生成的文件。它記錄了整個 node_modules 文件夾的樹狀結構,甚至連模塊的下載地址都記錄了,從新安裝時只需下載文件便可。所以重裝模塊速度很是快。json

然而,npm5.0 在提高速度的同時也挖了一個大大的坑:less

之後修改 package.json 文件相應模塊的版本號,再執行 npm install 不會更新了,只能手動 npm install name@version 指定版本號來安裝。
而後它會自動更新 package-lock.json 文件。ide

直接執行 npm install 時,若是不存在 package-lock.json 文件,它會根據安裝模塊後的 node_modules 目錄結構來建立;
若是已經存在 package-lock.json 文件,則它只會根據 package-lock.json 文件指定的結構來下載模塊,並不會理會 package.json 文件。.net

目前 GitHub 上已有相關 issue 了:https://github.com/npm/npm/is...code

【參考文檔】blog

https://docs.npmjs.com/files/...
http://blog.csdn.net/zmrdlb/a...
http://blog.csdn.net/aaa333qw...
https://docs.npmjs.com/files/...

相關文章
相關標籤/搜索