【node使用】package.json詳解以及package-lock.json的作用

一、創建 package.json

輸入如下命令之後,會要求填寫基本的配置信息,這裏,我們選擇一路回車即可,待生成 package.json 文件之後,再來配置。

npm init

二、配置 package.json

當然,.json 文件是不允許寫註釋的,這裏只是方便大家閱讀而已

{
  // 包的名稱
  "name": "sg-utils",
  // 包的版本號
  "version": "1.4.6", 
  // 包的描述
  "description": "javascript通用工具類", 
  // 包的入口文件
  "main": "index.js", 
  // 上傳npm的白名單,即被允許上傳的文件
  "files": [ 
    "src",
    "demo",
    "index.js"
  ],
  // 指定了運行腳本命令的npm命令行縮寫
  "scripts": {
    "start": "node server.js"
  },
  // 遠程代碼倉庫
  "repository": {
    "type": "git",
    "url": "https://github.com/shiguang0116/sg-utils"
  },
  // 關鍵字
  "keywords": [
    "javascript",
    "util"
  ],
  // 作者
  "author": "guang.shi",
  // 許可證數組
  "license": "ISC",
  // 提交bug的地址
  "bugs": {
    "url": "https://github.com/shiguang0116/sg-utils/issues"
  },
  // 包的主頁
  "homepage": "https://github.com/shiguang0116/sg-utils#readme",
  // 運行引擎,指明node.js運行所需要的版本
  "engines": {
    "node": ">= 6.0.0",
    "npm": ">= 3.0.0"
  },
  // 開發環境的依賴包列表
  "devDependencies": {
    "eslint": "^5.16.0",
    "eslint-config-vui": "^0.2.7",
    "eslint-plugin-html": "^5.0.5"
  },
  // 生產環境的依賴包列表
  "dependencies": {},
  // 依賴包列表
  "peerDependencies": {}
}

.

三、devDependencies、dependencies、peerDependencies的區別

1、devDependencies和dependencies

  • devDependencies是只會在開發環境下依賴的模塊,生產環境不會被打入包內。安裝時,加上--save-dev
  • dependencies依賴的包不僅開發環境能使用,生產環境也能使用。安裝時,加上--save

2、peerDependencies的作用

  • peerDependencies是用來發布npm插件時指定所需要兼容的宿主包的版本。比如以下場景:
"peerDependencies": {
    "webpack": "^2.0.0"
}
UNMET PEER DEPENDENCY [email protected]
npm WARN [email protected] requires a peer of webpack@^2.0.0 but none was installed
  • 以上提示,足夠讓開發者認識到當前所存在的風險了,該特性添加於Node.js 0.8.19(npm 1.2.10)版本。

.

四、版本符號說明

如果對“語義化版本號變更”不瞭解的,可以參考文章:https://blog.csdn.net/guang_s/article/details/84991304

  • ^ 是npm默認的版本符號。 例如:npm install --save sg-utils 會在 package.json 中添加 “sg-utils”: “^1.4.6”。這個符號會告訴npm可以安裝 1.4.6 或者一個大於它的版本, 但是要是主版本 1 以下的版本;
  • ~ 符號表示可以安裝 1.4.6 或者一個大於它的版本, 但是要是次版本號 1.3以下的版本;
  • > 符號用來指定可以安裝的 beta 版本;
  • 可以通過 npm config set save-prefix='' 來設置默認符號。

.

五、package-lock.json的作用

npm更新到v5.x.x以後,會出現一種新的自動生成文件 package-lock.json,如果打開這個文件,會發現它看着像 package.json 裏面的依賴。那麼,它究竟是做什麼用的呢?

1、背景介紹

  • 比如我們的項目用了 sg-utils ,npm install sg-utils --save-dev,我們本地使用的版本是 ^1.4.6,這時 package.json 記錄的版本號也是 ^1.4.6;
  • 當有人從 github 上拉取我們的代碼,然後初始化項目(或者我們自己有一天也可能再次安裝依賴)npm install。這個時候,項目安裝的 sg-utils 就是 在主版本 1 以下的最新版本 (比如更新到了 1.4.7,兩個版本之前修改了一個bug),那麼本地安裝的就是 1.4.7;
  • 那麼,就會存在多人開發項目,但是本地的依賴版本不一樣的情況。雖然只是修改了一個 bug,但仍然有可能影響代碼的開發。

2、package-lock.json 版本鎖定

  • 當我們安裝依賴時,package-lock.json 文件會自動生成。裏面會描述上一次更改後的確切的依賴管理樹,包含了唯一的版本號和相關的包信息。之後的 npm install 會根據 package-lock.json 文件進行安裝,保證不同環境、不同時間下的依賴是一樣的;
  • 由於 package-lock.json 文件中記錄了下載源地址,可以加快我們的 npm install 速度。

.

系列文章

【node使用】發佈一個自己的npm包
【node使用】搭建一個web服務器
【node使用】package.json詳解以及package-lock.json的作用
【node使用】path模塊
【node使用】glob匹配模式
【node使用】fs模塊
【node使用】實現console輸出不同顏色

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章