什麼是 package.json
簡單地說:就是管理 npm
包的文件,包含了項目所依賴的 npm
包、項目的配置信息。
建立方式:npm init
按照系統提示填寫相關信息便可(回車設置爲空)。
具體配置說明,詳見 package.json
字段全解node
升級了 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
咱們先來看一段官方解釋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_modules
或 package.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/...