package.json 屬性概覽

package.json 俗稱 依賴配置文件(我本身取的名),最主要的做用就是,管理項目中所用到的依賴。它自己的做用是爲 node.js 模塊服務的,模塊有不少屬性,爲了描述模塊的特性,package.json 也被稱做模塊的 描述文件html

name version

nameversionpackage.json 中最重要的兩個屬性,並且是必填的。這兩個屬性一塊兒就造成了 npm 模塊惟一標識符。分別表示 模塊的 名稱 和 版本。名稱通常不會變,版本會隨着模塊的修改而更新變更。前端

description keywords

這兩個字段都是用來在 npm 官網上搜索的, 區別是一個是字符串, 一個是字符串數組。node

dependencies devDependencies

這兩個屬性,都是用來記錄項目中所用到的依賴。區別是,一個是用來記錄開發環境所用的依賴,一個是記錄生產環境所用到的依賴。git

好比,對於大多數前端項目來講,gulp 等構件工具及插件,可能只在開發環境中使用,而在生產環境只關心最終生成的 dist 文件,因此,gulp 等插件 就應該放在 devDependencies 下。npm

經過 npm i xxx -savenpm i xxx -syarn add xxx -S 安裝的依賴會添加到 dependencies 下;json

經過 npm i xxx -save-devnpm i xxx -dyarn add xxx -D 安裝的依賴會添加到 devDependencies 下;gulp

peerDependencies

可讓宿主環境擁有某個特定版本的依賴數組

探討npm依賴管理之peerDependencies工具

前提項目X 依賴 模塊A, 模塊A 依賴 模塊B插件

狀況一:若是 模塊B 定義在 模塊Adependencies 字段中
結果模塊B 只能被 模塊A 引用
可能的好處:假如 項目X 也依賴 模塊B,版本不同,則能夠互不干擾。
可能的壞處:假如 項目X 也依賴 模塊B,且版本同樣,則會有兩個如出一轍的 模塊B

項目X
└──node_modules/
   └── 模塊A
       └──node_modules/
          └── 模塊B

狀況二:若是 模塊B 定義在 模塊ApeerDependencies 字段中
結果項目X 也會下載 或 檢查 模塊b 的版本。
可能的好處:假如 項目X 也依賴 模塊B,版本不同,則會在控制檯以警告的形式提示版本問題。
可能的壞處:假如 項目X 也依賴 模塊B,且版本同樣,只用下載一遍。

項目X
└──node_modules/
   ├── 模塊a
   └── 模塊b

結論:定義在 peerDependencies 中的依賴,在宿主環境中,也會被下載 或 被檢查版本。

files

files 是一個包含項目中的文件的數組。若是命名了一個文件夾,那也會包含文件夾中的文件。(除非被其餘條件忽略了 .npmignore .gitignore)

npm publish 的時候,會依據這個配置 上傳你的文件。

scripts

scripts 是一個由腳本命令組成的 kye value 對象。

相關文章
相關標籤/搜索