1. npm與包
包: node.js中的第三方模塊
1.1 包的基本使用
下載包: npm i [package name]
初次裝包完成后,在項目文件夾下多一個叫做node_modules
文件夾和package-lock.json
配置文件
node_modules
文件夾: 用來存放所有已安裝到項目的包。require()
導入第三方包時,從這個目錄查找并加載。package-lock.json
配置文件: 用來記錄node_modules
目錄下的每一個包下載信息,如包的名字、版本號、下載地址等。
包的語義化版本規范:包的版本號,總共三位數字,如2.24.0
第一位數字:大版本
第二位數字:功能版本
第三位數字:bug修復版本
前面的版本號增長了,則后面的版本號歸零
1.2 包管理配置文件
在項目根目錄中,必須提供叫做package.json
的包管理配置文件。用來記錄與項目有關的一些配置信息,如:
項目名稱、版本號、描述等
項目中用到哪些包
哪些包只在開發期間用到
哪些包在開發和部署時都需要用到
使用npm init -y
快速新建package.json
文件
devDependencies
:在項目開發階段使用,在項目上線后不會用到,下載時使用-d
或--save-dev
后綴
1.3 npm下包鏡像源
下包的服務器地址
// 查看當前下包鏡像源
npm config get registry
// 將下包的鏡像源切換為淘寶鏡像源
npm config set registry=https://registry.npm.taobao.org/
i5ting_toc
: 將md轉html的npm包
npm i -g i5ting_toc
i5ting_toc -f 要轉換的md文件路徑 -o
6.4 開發屬于自己的包
新建文件夾,作為包的根目錄
-
在文件夾中,新建如下三個文件:
package.json:包管理配置文件
index.js: 包入口文件
README.md: 包說明文檔
初始化package.json
{
"name":"", // 包名稱,不能重復
"version":"", // 版本號
"main":"", // 包入口文件
"description":"", // 包描述信息
"keywords":[""], // 包搜索關鍵字
"license":"ISC" // 開源許可協議
}
-
發布包
1)注冊npm賬號
2)登錄npm賬號:在終端執行
npm login
命令,依次輸入用戶名、密碼、郵箱。注:必須在官方下載路徑上;查看當前包下載路徑
nrm ls
,切換到官方下載路徑nrm use npm
3)在包根目錄運行
npm publish
命令,即可將包發布到npm上4)刪除已發布包:運行
npm unpublish [包名] --force
命令,只能刪除72小時內發布的包,且刪除后在24小時內不允許重復發布 -
模塊加載機制
自定義模塊:使用
require()
加載自定義模塊時,必須指定以./
或../
開頭的路徑標識符,如果未指定,node
會把它當做內置模塊或第三方模塊進行加載如果使用
require()
導入自定義模塊時,省略了模塊擴展名,則node.js
會按順序嘗試加載以下文件:1) 按照確切的文件名進行加載
2)補全.js擴展名進行加載
3)補全.json擴展名進行加載
4)補全.node擴展名加載
5)加載失敗
第三方模塊:傳遞給
require()
模塊標識符的不是一個內置模塊,嘗試從/node_modules
文件夾加載第三方模塊,如果沒有找到對應第三方模塊,則移動到上一層父目錄中node_module
中進行加載,直到系統的根目錄目錄作為模塊:
1)在被加載目錄下查找一個叫做
package.json
的文件,并尋找main
屬性,作為require()
加載的入口2)如果目錄中沒有
pakage.json
文件,或main
入口不存在無法解析,則Node.js
會試圖加載目錄下的index.js
文件3)報錯