package.json 詳解

package.json 可以通過 npm init 來交互式地創建。
package.json 中可寫的內容非常多,以下講解字段的內容。

name 字段 和 version 字段

name 和 version 字段是 package.json 文件中最重要的字段。這是必須的字段,如果你的 npm 包沒有指定這兩個字段,將無法被安裝。name 和 version 字段被假定組合成一個唯一的標識符。包內容的更改和包版本的更改是同步的。

因此,一般我們認為一個最簡單的 package.json 文件如下所示:

{
  "name" : "xxx",
  "version" : "0.0.1",
}

另外,對于 name 字段的命名有如下規則限制:

  1. name 的長度必須小于等于214個字符。
  2. name 不能以"."(點)或者"_"(下劃線)開頭。
  3. name 中不能包含大寫字母。
  4. name 最終將被用作URL的一部分、命令行的參數和文件夾名。因此,name 不能含有非URL安全的字符。

scripts 字段

scripts 指定了運行腳本命令的 npm 命令行縮寫,比如 start 指定了運行 npm run start 時,所要執行的命令。

下面的設置指定了 npm run dev、npm run dist、npm run pub、npm run start、npm run test 時,所要執行的命令。

"scripts": {
   "dev": "anyproxy --port 8080 --rule proxy.js & npm run start",
   "dist": "cross-env NODE_ENV=production node ./tools/script.js",
   "pub": "npm run dist",
   "start": "cross-env NODE_ENV=development node ./tools/script.js",
   "test": "node ./test.js",
}

我們從上面也可以看出,我們可以在一個字段命令中運行另外一個字段。

bin 字段

bin 字段用來指定各個內部命令對應的可執行文件的位置,一般而言,對于需要全局安裝的包,我們都有該字段:

"bin": {
  "myCommand": "./bin/index.js"
}

上面的代碼中指定,myCommand 命令對應的可執行文件在同級別目錄下的 bin/index.js 中,因此 npm 在安裝該包的時候就會在 node_modules/.bin 的目錄下建立符號鏈接,對于全局安裝的包,由于 node_modules/.bin 會在運行時加入系統的 PATH 變量,因此可以直接通過命令來調用腳本。

另外,如果我們是在項目內安裝包,也可以通過 npx myCommand 的方式來進行調用。

main 字段

main 字段指定了加載的入口文件,require('moduleName') 就會加載這個文件。

對于 Node 來說,這個字段的默認值是模塊根目錄下面的 index.js。

config 字段

config 字段可以添加命令行的環境變量,例如下面的 package.json 文件:

{
  "name" : "buluo",
  "config" : { "port" : "8080" },
  "scripts" : { "start" : "node index.js" }
}

在 index.js 中,我們可以直接使用該環境變量:

http
  .createServer(...)
  .listen(process.env.npm_package_config_port)

一些其他的描述性字段

接下來我們介紹一些描述性字段,這些描述性字段一般會在 npm 包的檢索、管理等中起到一定作用。

keywords :npm 包的關鍵字,keywords 是一個字符串的數組。它可以幫助人們在使用 npm search 時找到這個包。
homepage :項目主頁的 url。
bugs :改項目的 issue 跟蹤頁面或這報告 issue 的 email 地址。這對使用這個包遇到問題的用戶會有幫助,例如:

{ 
  "url" : "https://github.com/owner/project/issues",
  "email" : "project@hostname.com"
}

license :指定該 npm 包所使用的協議。
author:包作者名字,一般使用數組或者字符串,格式如下:

{
    "name": "Barney Rubble",
    "email": "b@rubble.com",
    "url": "http://barnyrubble.tumblr.com/"
}

或者

"Barney Rubble <b@rubble.com> (http://barnyrubble.tumblr.com/)"

contributors: 貢獻者列表,是一個數組,每一個單位的格式和 anthor 相同。
repository:指明你的代碼被托管在何處,這對那些想要參與到這個項目中的人來說很有幫助。如果 git 倉庫在 github 上,用 npm docs 命令將會找到你,例如:

{
    "type": "git",
    "url": "https://github.com/npm/npm.git"
}

以上便是對一部分 pacakge.json 的字段的介紹,實際上,package.json 的字段不止這些,但是一般而言,了解以上字段已經足夠我們日常的學習和使用了。

更多字段可以參考官方文檔

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。