国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

Node.js的包詳細(xì)介紹

2024-05-06 16:14:26
字體:
供稿:網(wǎng)友
這篇文章主要介紹了Node.js的包詳細(xì)介紹,Node.js的包是一個(gè)目錄,其中包含JSON格式的包說明文件package.json,Node.js的包基本遵循CommonJS規(guī)范,需要的朋友可以參考下
 

在Node.js語言中,包和模塊并沒有本質(zhì)的不同,包是在模塊的基礎(chǔ)上更深一步的抽象,包將某個(gè)獨(dú)立的功能封裝起來,用于發(fā)布、更新、依賴管理和進(jìn)行版本控制。Node.js根據(jù)CommonJS規(guī)范實(shí)現(xiàn)了包機(jī)制,開發(fā)了npm來解決包的發(fā)布和獲取需求。

Node.js的包是一個(gè)目錄,其中包含JSON格式的包說明文件package.json。Node.js的包基本遵循CommonJS規(guī)范,因此具備以下特征:

CommonJS規(guī)范定義的包特性:

1)頂層目錄包含package.json文件;
2)bin目錄存放二進(jìn)制文件;
3)lib目錄存放JavaScript文件;
4)doc目錄存放文檔;
5)test目錄存放單元測(cè)試。

Node.js的模塊與文件是一一對(duì)應(yīng)的,文件不僅可以是JavaScript源碼文件或二進(jìn)制文件,還可以是目錄。最簡(jiǎn)單的包,就是一個(gè)目錄的模塊。

Node.js的包通常是一些模塊的集合,在模塊的基礎(chǔ)上提供了更高層的抽象,相當(dāng)于提供了一些固定接口的函數(shù)庫。
通過定制package.json,我們可以創(chuàng)建更復(fù)雜、更完善、更符合規(guī)范的包用于發(fā)布。

Node.js在調(diào)用包時(shí),首先會(huì)檢查包中的package.json文件的main字段,將其作為包的接口模塊,如果package.json文件的main字段不存在,那么Node.js會(huì)嘗試尋找index.js或index.node作為包的接口。

package.json文件是CommonJS規(guī)范用于描述包的文件,完全符合規(guī)范的package.json文件應(yīng)該包含以下字段:
1)name:包名。包名是唯一的,由小寫字母、數(shù)字和下劃線組成,不能含空格。
2)description:包說明。對(duì)包進(jìn)行簡(jiǎn)要描述。
3)version:版本號(hào)。滿足《語義化版本識(shí)別》規(guī)范的版本字符串。
4)keywords:關(guān)鍵字?jǐn)?shù)組,通常用于搜索。
5)maintainers:維護(hù)者數(shù)組。每個(gè)元素包含name、email(可選)、web(可選)字段。
6)contributors:貢獻(xiàn)者數(shù)組。格式與maintainer數(shù)組相同。包作者應(yīng)該是貢獻(xiàn)者數(shù)組的第一個(gè)元素。
7)bugs:提交bug的地址,可以是網(wǎng)址或電郵地址。
8)licenses:許可證數(shù)組。每個(gè)元素要包含type(許可證名稱)和url(鏈接到許可證文本的地址)字段。
9)repositories:倉庫托管地址數(shù)組。每個(gè)元素要包含type(倉庫的類型,如Git)、url(倉庫地址)和path(相對(duì)于倉庫的路徑,可選)字段。
10)dependencies:包依賴。是一個(gè)關(guān)聯(lián)數(shù)組,由包名和版本號(hào)組成。

注:《語義化版本識(shí)別》規(guī)范是國(guó)外提出的一套版本命名規(guī)范,最初目的是解決各種各樣的版本號(hào)大小比較的問題,目前被許多包管理系統(tǒng)所采用。

下面是一個(gè)完全符合CommonJS規(guī)范的package.json例子:

復(fù)制代碼代碼如下:

{   
  "name": "testpackage",  
  "description": "My package for CommonJS.",  
  "version": "0.1.0",  
  "keywords": [  
     "testpackage",  
     "liq"  
  ],   
  "maintainers": [  
     {  
        "name": "liq",  
        "email": "liq@hotmail.com",  
     }  
  ],  
  "contributors": [  
     {  
        "name": "liq",  
        "web": "http://blog.csdn.net/chszs"  
     }  
  ],  
  "bugs": {  
     "mail": "liq@hotmail.com",  
     "web": "http://blog.csdn.net/chszs"  
  },  
  "licenses": [  
     {  
        "type": "Apache License v2",  
        "url": "http://www.apache.org/licenses/apache2.html"  
     }  
  ],  
  "repositories": [  
     {  
        "type": "git",  
        "url": "http://github.com/chszs/packagetest.git"  
     }  
  ],  
  "dependencies": {   
     "webkit": "1.2",  
     "ssl": {   
        "gnutls": ["1.0", "2.0"],  
        "openssl": "0.9.8"  
     }  
  }  
}
 

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 通许县| 景泰县| 宜君县| 宜都市| 招远市| 沽源县| 眉山市| 囊谦县| 桃江县| 仲巴县| 托里县| 积石山| 大化| 德钦县| 鹰潭市| 武清区| 扎囊县| 莱西市| 东乡| 全椒县| 罗城| 西乌珠穆沁旗| 象州县| 平顺县| 双桥区| 门头沟区| 乐陵市| 雷州市| 香格里拉县| 昌乐县| 阜阳市| 凉山| 陵水| 湖州市| 吴桥县| 延安市| 阿合奇县| 阳朔县| 墨脱县| 阳朔县| 武冈市|