package.json各字段的做用

package.json文件可使你的npm包對於其餘人來講更容易管理和下載。發佈npm包也是必需要有該文件的。html

name

npm包的名字,必須是一個小寫的單詞,能夠包含連字符-和下劃線_發佈時必填node

version

npm包的版本號,必須是x.x.x的形式,而且遵循語義化版本規則。發佈時必填react

階段 規則 例子
首次發版 從1.0.0開始 1.0.0
補丁發佈 遞增第三位數 1.0.8
次要版本 遞增第二位數,將第三位置位0 1.2.0
主要版本 遞增第一位數,將後倆位數置位0 3.0.0

:版本號不存在十進制說法,當代碼一直處於同一階段更新時,版本號能夠一直增長、1.0.351.12.5都是能夠的。webpack

description

npm包的簡短描述,它會顯示在npm官方搜索的列表中。git

"description": "A Component Library for React"
複製代碼

keywords

npm包的關鍵詞,是一個字符串數組,能夠幫助其餘人在npm搜索列表中發現你的包。github

"keywords": [
  "react",
  "component",
  "ui"
],
複製代碼

homepage

npm包項目主頁地址,能夠是託管平臺的地址。web

"homepage": "https://github.com/lhz960904/ouio#readme"
複製代碼

bugs

npm包問題反饋的地址,能夠是github的issue或者是郵箱地址。對於那些使用遇到問題的人頗有幫助。npm

"bugs": {
  "url": "https://github.com/lhz960904/ouio/issues",
  "email": "lihaozecq@gmail.com"
}
複製代碼

license

爲npm包指定許可證,以便其餘人知道他們被容許使用方式以及該npm包被施加的任何限制。json

author

npm包的做者,電子郵件和網站都是能夠的,如下倆種方式均可以。數組

"author": "lihaozecq <lihaozecq@gmail.com> (https://github.com/lhz960904)" 
複製代碼
"author": {
  "name" : "lihaozecq",
  "email" : "lihaozecq@gmail.com",
  "url" : "https://github.com/lhz960904"
}
複製代碼

files

npm包做爲依賴安裝時要包括的文件,格式是文件正則的數組,["*"]表明全部文件。也可使用npmignore 來忽略個別文件。 files字段優先級最大,不會被npmignore.gitignore覆蓋。

如下文件老是被包含的,與配置無關

  • package.json
  • README.md
  • CHANGES / CHANGELOG / HISTORY
  • LICENCE / LICENSE

如下文件老是被忽略的,與配置無關

  • .git
  • .DS_Store
  • node_modules
  • .npmrc
  • npm-debug.log
  • package-lock.json
  • 等等

main

指定npm包的入口文件,例 "main": "src/index.js"require(name)的時候實質是引入了改文件。

bin

開發可執行文件時,bin字段能夠幫助你設置連接,不須要手動設置PATH。

"bin" : { 
  "oui" : "./cli.js" 
}
複製代碼

當像上面這樣指定時,下載npm包,會自動連接cli.jsuse/local/bin/oui,能夠直接在命令行執行oui實質上執行的是npm包的cli,js文件,須要在可執行文件頭部加上#!/usr/bin/env node,不然會在沒有node的時候執行。當只有一個可執行文件且名字和包名同樣,能夠直接寫成字符串形式。

"bin": "./cli.js"
複製代碼

repository

npm包託管的地方,對於想貢獻代碼的人是有幫助的。

"repository": {
  "type": "git",
  "url": "https://github.com/lhz960904/ouio"
}
複製代碼

scripts

可執行的命令。具體文檔

"scripts": {
  "dev": "cross-env NODE_ENV=development node server.js",
  "build": "cross-env NODE_ENV=production node server.js"
}
複製代碼

dependencies

npm包所依賴的其餘npm包,當使用npm install 下載該包時,dependencies中指定的包都會一併被下載。指定版本範圍的規則以下:

  • version 嚴格匹配
  • > version 必須大於該版本
  • <= version 必須小於等於該版本
  • ^version 兼容版本
  • 1.2.x 1.2.0, 1.2.1等,不能是1.3x
  • 等等
"dependencies": {
  "react": "^16.10.2",
  "react-dom": "^16.10.2"
}
複製代碼

devDependencies

npm包所依賴的構建和測試相關的npm包,放置到devDependencies,當使用npm install 下載該包時,devDependencies中指定的包不會一併被下載。

"devDependencies": {
  "eslint": "^6.1.0",
  "jest": "^24.8.0",
  "webpack": "^4.0.0"
}
複製代碼

peerDependencies

指定npm包與主npm包的兼容性,當開發插件時是須要的,例如開發React組件時,其組件是依賴於reactreact-domnpm包的,能夠在peerDependencies指定須要的版本。

"peerDependencies": {
  "react": ">=16.8.0",
  "react-dom": ">=16.8.0"
}
複製代碼

:若是peerDependencies指定的npm包沒有下載,npm版本1和2會直接下載。 npm3不會下載,會給出警告。

engines

指定npm包可使用的Node版本

"engines" : {
  "node" : ">=10.0.0"
}
複製代碼

參考

相關文章
相關標籤/搜索