這是我參與8月更文挑戰的第4天,活動詳情查看:8月更文挑戰node
在每一個node
項目或者模塊的根目錄下,一般會有一個叫作package.json
文件,它定義了這個項目所須要的各個模塊信息和版本,以及整個項目的配置信息,例如項目的名稱,版本,描述等等信息...react
大多數的開發者對package.json
的瞭解只是在:webpack
其實,package.json
的做用在此只是冰山一角,咱們還能夠配置更多的屬性來實現更多的功能,下面咱們將帶你深刻認識package.json
。git
咱們經過npm init
命令來初始化一個node模塊,看看它的package.json
文件。(package.json
文件能夠手寫出來)github
{
# 項目名稱
"name": "island",
# 項目版本
"version": "1.0.0",
# 項目描述
"description": "",
# 入口文件
"main": "index.js",
# 腳本
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
# 做者
"author": "QC2168",
# 許可證
"license": "ISC"
}
複製代碼
在package.json
中能夠配置不少的屬性,其中name
和version
屬性是必不可少的,這兩個屬性是npm
模塊的惟一標識。web
設置模塊的名稱,用於告知模塊的名稱。shell
-
)或下劃線(_
)。.
)或下劃線(_
)開頭。{
"name": "island"
}
複製代碼
設置你的模塊版本號,此屬性遵循版本的語義版本控制記法,這意味着版本始終以 3 個數字表示:x.x.x
。express
詳細請閱讀語義化版本 2.0.0:semver.org/lang/zh-CN/npm
{
"author": "QC2168"
}
複製代碼
該屬性是設置模塊中的關鍵詞,當咱們使用npm
檢索模塊時,會對模塊中的description
字段和keywords
字段進行匹配,寫好 package.json
中的 description
和 keywords
將有利於增長咱們模塊的曝光率。若是你沒有打算髮布到npm
,能夠忽略這個屬性json
{
"keywords": ["server", "osiolabs", "express", "compression"]
}
複製代碼
該屬性填寫的是對該模塊的描述內容,方便於用戶瞭解這個模塊。同時,包管理器也會把這個值做爲搜索的關鍵詞
{
"description": "感謝你的閱讀,動動你的小手來個贊"
}
複製代碼
該屬性是設定模塊的許可證,讓用戶瞭解它們是在什麼受權下使用此包,以及還有哪一些限制條件,例如MIT
開源,很寬鬆的協議,基本上你什麼均可以幹,只要保留做者版權便可。
{
"license": "MIT"
}
複製代碼
該屬性是告知開發者此項目 / 模塊要運行的 Node.js
或其餘命令的版本。
"engines": {
"node": ">= 6.0.0",
"npm": ">= 3.0.0",
"yarn": "^0.13.0"
}
複製代碼
設置模塊的做者名稱,你能夠以字符串 / 對象的形式填寫,以對象形式填寫能夠填寫更多關於做者的詳細信息。
{
"author": "QC2168"
}
or
{
"name": "QC2168",
"GitHub": "https://github.com/QC2168"
}
複製代碼
你還能夠在你的模塊中配置其餘貢獻者的信息,contributors
是一個數組類型的屬性,你能夠以字符串 / 對象形式存放貢獻者的信息。
{
"contributors": ["QC2168"]
}
or
{
"contributors": [
{
"name": "QC2168",
"GitHub": "https://github.com/QC2168"
}
]
}
複製代碼
該屬性設置模塊的入口位置,當項目導入模塊時,應用程序會在該位置搜索模塊導出。
一般是項目根目錄下的index.js
文件
{
"main": "src/index.js"
}
複製代碼
該屬性是設置該模塊是否能夠被髮布到npm
中,一般咱們會將非開源的項目把這個屬性設置爲true
,可防止模塊被意外發布的事情發生。
{
"private": "true"
}
複製代碼
該屬性是用於當咱們執行npm publish
時,只發布的目錄或者文件 (如下寫法指的是隻發佈dist
目錄下的文件)。
"files": [
"dist/"
],
複製代碼
定義一組npm
腳本,每次執行 npm run
,就會新建一個 shell
,而後在裏面執行制定的腳本命令。
"scripts": {
"watch": "webpack --watch",
"build": "webpack --config webpack.build.config.ts",
"start": "webpack serve --config webpack.dev.config.ts"
},
複製代碼
該屬性用於配置腳本中使用的環境變量,用於腳本命令中,例以下面的配置,能夠在腳本中使用process.env.npm_package_config_port
進行獲取。
{
"config" : { "port" : "8080" }
}
複製代碼
設置做爲依賴安裝的 npm
模塊的列表。
npm install <模塊名>
yarn add <模塊名>
複製代碼
當你使用 npm
/ yarn
安裝軟件模塊時,模塊名會自動被插入到package.json
的dependencies
屬性裏。
"dependencies": {
"react": "^17.0.0",
"react-dom": "^17.0.0"
},
複製代碼
設置做爲開發依賴安裝的 npm
軟件包的列表。
它們不一樣於 dependencies
,由於它們只需安裝在開發機器上,而無需在生產環境中運行代碼。
npm install --save-dev <模塊名>
yarn add --dev <模塊名>
複製代碼
當你使用 npm
/ yarn
安裝軟件模塊時,模塊名會自動被插入到package.json
的devDependencies
屬性裏。
"devDependencies": {
"webpack": "^5.38.1",
"webpack-cli": "^4.7.0",
"webpack-dev-server": "^3.11.2"
}
複製代碼
該屬性是指模塊代碼託管的地方。 這對想要了解源碼、貢獻的用戶有幫助。,一般放的是GitHub
倉庫地址
{
"repository": {
"type": "git",
"url": "https://github.com/QC2168/webpack-template.git"
}
}
複製代碼
該屬性填寫模塊問題報告的頁面,這對遇到問題的小夥伴頗有幫助,它們能夠經過該途徑來向你反饋問題。
"bugs": {
"url": "https://github.com/QC2168/webpack-template/issues"
},
複製代碼
該屬性填寫模塊的主頁 / 文檔,用戶能夠更好的瞭解你的模塊使用。
{
"homepage": "https://github.com/QC2168/webpack-template#readme",
}
複製代碼
本文介紹了package.json
中的大部分屬性和做用,並將其分類。同時,package.json
是一個Node項目的核心文件,它記錄了關於整個Node項目所須要的重要信息,也是Node項目中必不可少的文件。