《深入浅出Nodejs》笔记——模块机制(2)
前言
書上還有很大一部分講了C/C++模塊的編譯過程、核心模塊編寫和C/C++擴(kuò)展模塊的內(nèi)容,不過我對(duì)C++一竅不通因此沒有仔細(xì)看,如果以后需要再自習(xí)看吧。
包與NPM
第三方模塊中,模塊和模塊之間是散列在各地的,互相之間不能直接引用。而在模塊之外,包和NPM則是將模塊聯(lián)系起來的一種機(jī)制。
CommonJS的包規(guī)范定義其實(shí)也十分簡(jiǎn)單,它由包結(jié)構(gòu)和包描述文件兩個(gè)部分組成,前者用于組織包中的各種文件,后者用于描述包的相關(guān)信息,以供外部讀取分析。
包結(jié)構(gòu)
包實(shí)際上是一個(gè)存檔文件,即一個(gè)目錄直接打包為.zip或tar.gz格式的文件,安裝后解壓還原為目錄,完全符合CommonJS規(guī)范的包結(jié)構(gòu)應(yīng)該包含如下這些文件:
- package.json 包描述文件
- bin 存放可執(zhí)行二進(jìn)制文件
- lib 存放js代碼
- doc 存放文檔
- test 存放單元測(cè)試用例代碼
包描述文件與NPM
包描述文件用于表達(dá)非代碼相關(guān)的信息,它是一個(gè)JSON格式的文件——package.json,位于包的根目錄下。文件中的字段就不放上來了(字太多了);
NPM常用功能
1.查看幫助
安裝Node之后,執(zhí)行npm -v可以查看當(dāng)前NPM版本:
執(zhí)行NPM查看幫助引導(dǎo)說明:
使用npm help <command>可以查看具體命令說明,執(zhí)行命令后會(huì)在瀏覽器打開一個(gè)說明文檔。
2.安裝系統(tǒng)依賴包
安裝系統(tǒng)依賴包是NPM最常見的用法,它的執(zhí)行語句是npm install <packageName>。執(zhí)行命令后Node會(huì)在當(dāng)前目錄下創(chuàng)建node_modules目錄(如果當(dāng)前目錄下不存在這個(gè)目錄),然后在node_modules中創(chuàng)建對(duì)應(yīng)包名的目錄,然后將壓縮包解壓到這個(gè)目錄下。安裝好依賴包后就可以通過require(<packageName>)來引入包。
全局模式安裝
如果包中含有命令行工具,那么需要執(zhí)行npm install <packageName> -g來進(jìn)行全局模式安裝。
全局模式這個(gè)稱謂具有誤導(dǎo)性,全局模式安裝并不是將一個(gè)模塊包安裝為一個(gè)全局包,它并不意味著可以從任何地方用require()引用到這個(gè)模塊。它實(shí)際上是將一個(gè)包安裝位全局可用的可執(zhí)行命令,它根據(jù)包描述文件中的bin字段配置,將實(shí)際腳本鏈接帶與Node執(zhí)行文件相同的路徑下。
通過全局模式安裝的包都被安裝進(jìn)了一個(gè)同一目錄下,這個(gè)目錄可以用如下方式推算出來:
path.resolve(process.execPath, '..', '..', 'lib', 'node_modules');從本地安裝
對(duì)于一些沒有發(fā)布到NPM上或者因?yàn)榫W(wǎng)絡(luò)原因沒下載的包,可以通過將包下載到本地,然后以本地安裝。本地安裝只需為NPM指明package.json文件所在的位置即可:它可以是一個(gè)包含package.json的存檔文件,也可以是一個(gè)URL地址,也可以是一個(gè)目錄下有package.json文件的目錄位置:
npm install <tarball file> npm install <tarball url> npm install <folder>從非官方源安裝
如果不能通過官方源安裝,可以通過鏡像源安裝。在執(zhí)行命令時(shí),添加--registry=http://registry.url即可,示例如下:
npm install underscore --registry=http://registry可以指定默認(rèn)源:
npm config set registry http://registry.url3.NPM鉤子命令
4.發(fā)布包
編寫模塊
//hello.js exports.sayHello = function () {return 'Hello, world.'; }初始化包描述文件
可以在包目錄下使用npm init來生成package.json文件:
注冊(cè)包倉庫帳號(hào)
執(zhí)行npm adduser然后按順序進(jìn)行即可。
上傳包
在package.json文件所在目錄下,執(zhí)行npm publish。
安裝包
執(zhí)行npm install <packageName> --registry=https://registry.npmjs.org/。
管理包權(quán)限
npm owner ls <packageName> npm owner add <user> <packageName> npm owner rm <user> <pacjageName>分析包
npm ls可以列出當(dāng)前路徑下能夠通過模塊路徑找到的所有包,并生成依賴樹:
局域NPM
NPM潛在問題
前后端共用模塊
轉(zhuǎn)載于:https://www.cnblogs.com/FJH1994/p/5865024.html
總結(jié)
以上是生活随笔為你收集整理的《深入浅出Nodejs》笔记——模块机制(2)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Pycharm安装pip pip安装第三
- 下一篇: 雅虎开源发布/订阅消息平台Pulsar