在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ HTML/ NPM
文本編碼
小結(jié)
API 走馬觀花
API 走馬觀花
迭代
小結(jié)
運(yùn)行
回調(diào)
需求
代碼設(shè)計(jì)模式
進(jìn)程介紹
模塊
工程目錄
小結(jié)
小結(jié)
遍歷目錄
小結(jié)
小結(jié)
API 走馬觀花
用途
NPM
小結(jié)
安裝
網(wǎng)絡(luò)操作介紹
二進(jìn)制模塊
什么是 NodeJS
命令行程序
靈機(jī)一點(diǎn)
域(Domain)
應(yīng)用場(chǎng)景
模塊路徑解析規(guī)則
文件拷貝

NPM

NPM 是隨同 NodeJS 一起安裝的包管理工具,能解決 NodeJS 代碼部署上的很多問(wèn)題,常見(jiàn)的使用場(chǎng)景有以下幾種:

允許用戶(hù)從 NPM 服務(wù)器下載別人編寫(xiě)的三方包到本地使用。

允許用戶(hù)從 NPM 服務(wù)器下載并安裝別人編寫(xiě)的命令行程序到本地使用。

允許用戶(hù)將自己編寫(xiě)的包或命令行程序上傳到 NPM 服務(wù)器供別人使用。

可以看到,NPM 建立了一個(gè) NodeJS 生態(tài)圈,NodeJS 開(kāi)發(fā)者和用戶(hù)可以在里邊互通有無(wú)。以下分別介紹這三種場(chǎng)景下怎樣使用 NPM。

下載三方包

需要使用三方包時(shí),首先得知道有哪些包可用。雖然 npmjs.org 提供了個(gè)搜索框可以根據(jù)包名來(lái)搜索,但如果連想使用的三方包的名字都不確定的話(huà),就請(qǐng)百度一下吧。知道了包名后,比如上邊例子中的 argv,就可以在工程目錄下打開(kāi)終端,使用以下命令來(lái)下載三方包。

$ npm install argv
...
argv@0.0.2 node_modules\argv

下載好之后,argv 包就放在了工程目錄下的 node_modules 目錄中,因此在代碼中只需要通過(guò) require('argv')的方式就好,無(wú)需指定三方包路徑。

以上命令默認(rèn)下載最新版三方包,如果想要下載指定版本的話(huà),可以在包名后邊加上@<version>,例如通過(guò)以下命令可下載 0.0.1 版的 argv。

$ npm install argv@0.0.1
...
argv@0.0.1 node_modules\argv

如果使用到的三方包比較多,在終端下一個(gè)包一條命令地安裝未免太人肉了。因此 NPM 對(duì) package.json 的字段做了擴(kuò)展,允許在其中申明三方包依賴(lài)。因此,上邊例子中的 package.json 可以改寫(xiě)如下:

{
    "name": "node-echo",
    "main": "./lib/echo.js",
    "dependencies": {
        "argv": "0.0.2"
    }
}

這樣處理后,在工程目錄下就可以使用 npm install 命令批量安裝三方包了。更重要的是,當(dāng)以后 node-echo 也上傳到了 NPM 服務(wù)器,別人下載這個(gè)包時(shí),NPM 會(huì)根據(jù)包中申明的三方包依賴(lài)自動(dòng)下載進(jìn)一步依賴(lài)的三方包。例如,使用 npm install node-echo 命令時(shí),NPM 會(huì)自動(dòng)創(chuàng)建以下目錄結(jié)構(gòu)。

- project/
    - node_modules/
        - node-echo/
            - node_modules/
                + argv/
            ...
    ...

如此一來(lái),用戶(hù)只需關(guān)心自己直接使用的三方包,不需要自己去解決所有包的依賴(lài)關(guān)系。

安裝命令行程序

從 NPM 服務(wù)上下載安裝一個(gè)命令行程序的方法與三方包類(lèi)似。例如上例中的 node-echo 提供了命令行使用方式,只要 node-echo 自己配置好了相關(guān)的 package.json 字段,對(duì)于用戶(hù)而言,只需要使用以下命令安裝程序。

$ npm install node-echo -g

參數(shù)中的 -g 表示全局安裝,因此 node-echo 會(huì)默認(rèn)安裝到以下位置,并且 NPM 會(huì)自動(dòng)創(chuàng)建好 Linux 系統(tǒng)下需要的軟鏈文件或 Windows 系統(tǒng)下需要的.cmd文件。

- /usr/local/               # Linux系統(tǒng)下
    - lib/node_modules/
        + node-echo/
        ...
    - bin/
        node-echo
        ...
    ...

- %APPDATA%\npm\            # Windows系統(tǒng)下
    - node_modules\
        + node-echo\
        ...
    node-echo.cmd
    ...

發(fā)布代碼

第一次使用 NPM 發(fā)布代碼前需要注冊(cè)一個(gè)賬號(hào)。終端下運(yùn)行 npm adduser,之后按照提示做即可。賬號(hào)搞定后,接著我們需要編輯 package.json 文件,加入 NPM 必需的字段。接著上邊 node-echo 的例子,package.json 里必要的字段如下。

{
    "name": "node-echo",           # 包名,在NPM服務(wù)器上須要保持唯一
    "version": "1.0.0",            # 當(dāng)前版本號(hào)
    "dependencies": {              # 三方包依賴(lài),需要指定包名和版本號(hào)
        "argv": "0.0.2"
      },
    "main": "./lib/echo.js",       # 入口模塊位置
    "bin" : {
        "node-echo": "./bin/node-echo"      # 命令行程序名和主模塊位置
    }
}

之后,我們就可以在 package.json 所在目錄下運(yùn)行 npm publish 發(fā)布代碼了。

版本號(hào)

使用 NPM 下載和發(fā)布代碼時(shí)都會(huì)接觸到版本號(hào)。NPM 使用語(yǔ)義版本號(hào)來(lái)管理代碼,這里簡(jiǎn)單介紹一下。

語(yǔ)義版本號(hào)分為 X.Y.Z 三位,分別代表主版本號(hào)、次版本號(hào)和補(bǔ)丁版本號(hào)。當(dāng)代碼變更時(shí),版本號(hào)按以下原則更新。

+ 如果只是修復(fù)bug,需要更新Z位。

+ 如果是新增了功能,但是向下兼容,需要更新Y位。

+ 如果有大變動(dòng),向下不兼容,需要更新X位。

版本號(hào)有了這個(gè)保證后,在申明三方包依賴(lài)時(shí),除了可依賴(lài)于一個(gè)固定版本號(hào)外,還可依賴(lài)于某個(gè)范圍的版本號(hào)。例如"argv": "0.0.x"表示依賴(lài)于 0.0.x 系列的最新版 argv。NPM 支持的所有版本號(hào)范圍指定方式可以查看官方文檔。

靈機(jī)一點(diǎn)

除了本章介紹的部分外,NPM 還提供了很多功能,package.json 里也有很多其它有用的字段。除了可以在 npmjs.org/doc/ 查看官方文檔外,這里再介紹一些 NPM 常用命令。

  • NPM 提供了很多命令,例如 install 和 publish,使用 npm help 可查看所有命令。

  • 使用 npm help 可查看某條命令的詳細(xì)幫助,例如 npm help install。

  • 在 package.json 所在目錄下使用npm install . -g可先在本地安裝當(dāng)前命令行程序,可用于發(fā)布前的本地測(cè)試。

  • 使用npm update <package>可以把當(dāng)前目錄下 node_modules 子目錄里邊的對(duì)應(yīng)模塊更新至最新版本。

  • 使用npm update <package> -g可以把全局安裝的對(duì)應(yīng)命令行程序更新至最新版。

  • 使用npm cache clear可以清空 NPM 本地緩存,用于對(duì)付使用相同版本號(hào)發(fā)布新版本代碼的人。

  • 使用npm unpublish <package>@<version>可以撤銷(xiāo)發(fā)布自己發(fā)布過(guò)的某個(gè)版本代碼。
上一篇:用途下一篇:代碼設(shè)計(jì)模式