欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

NodeJS中的命令行程序、工程目錄、NPM

 更新時(shí)間:2023年11月18日 11:43:41   投稿:yin  
使用NodeJS編寫(xiě)的東西,要么是一個(gè)包,要么是一個(gè)命令行程序,而前者最終也會(huì)用于開(kāi)發(fā)后者,一般我們會(huì)同時(shí)提供命令行模式和API模式兩種使用方式,并且我們會(huì)借助三方包來(lái)編寫(xiě)代碼,NPM是隨同NodeJS一起安裝的包管理工具,能解決NodeJS代碼部署上的很多問(wèn)題

使用NodeJS編寫(xiě)的東西,要么是一個(gè)包,要么是一個(gè)命令行程序,而前者最終也會(huì)用于開(kāi)發(fā)后者,一般我們會(huì)同時(shí)提供命令行模式和API模式兩種使用方式,并且我們會(huì)借助三方包來(lái)編寫(xiě)代碼,NPM是隨同NodeJS一起安裝的包管理工具,能解決NodeJS代碼部署上的很多問(wèn)題。本文介紹了使用NodeJS編寫(xiě)代碼前需要做的準(zhǔn)備工作,包括NPM的介紹。

命令行程序

使用NodeJS編寫(xiě)的東西,要么是一個(gè)包,要么是一個(gè)命令行程序,而前者最終也會(huì)用于開(kāi)發(fā)后者。因此我們?cè)诓渴鸫a時(shí)需要一些技巧,讓用戶覺(jué)得自己是在使用一個(gè)命令行程序。

例如我們用NodeJS寫(xiě)了個(gè)程序,可以把命令行參數(shù)原樣打印出來(lái)。該程序很簡(jiǎn)單,在主模塊內(nèi)實(shí)現(xiàn)了所有功能。并且寫(xiě)好后,我們把該程序部署在/home/user/bin/node-echo.js這個(gè)位置。為了在任何目錄下都能運(yùn)行該程序,我們需要使用以下終端命令。

$ node /home/user/bin/node-echo.js Hello World
Hello World

這種使用方式看起來(lái)不怎么像是一個(gè)命令行程序,下邊的才是我們期望的方式。

$ node-echo Hello World

Linux

在Linux系統(tǒng)下,我們可以把JS文件當(dāng)作shell腳本來(lái)運(yùn)行,從而達(dá)到上述目的,具體步驟如下:

  • 在shell腳本中,可以通過(guò)#!注釋來(lái)指定當(dāng)前腳本使用的解析器。所以我們首先在node-echo.js文件頂部增加以下一行注釋,表明當(dāng)前腳本使用NodeJS解析。

     #! /usr/bin/env node
    

    NodeJS會(huì)忽略掉位于JS模塊首行的#!注釋,不必?fù)?dān)心這行注釋是非法語(yǔ)句。

  • 然后,我們使用以下命令賦予node-echo.js文件執(zhí)行權(quán)限。

     $ chmod +x /home/user/bin/node-echo.js
    
  • 最后,我們?cè)赑ATH環(huán)境變量中指定的某個(gè)目錄下,例如在/usr/local/bin下邊創(chuàng)建一個(gè)軟鏈文件,文件名與我們希望使用的終端命令同名,命令如下:

     $ sudo ln -s /home/user/bin/node-echo.js /usr/local/bin/node-echo
    

這樣處理后,我們就可以在任何目錄下使用node-echo命令了。

Windows

在Windows系統(tǒng)下的做法完全不同,我們得靠.cmd文件來(lái)解決問(wèn)題。假設(shè)node-echo.js存放在C:\Users\user\bin目錄,并且該目錄已經(jīng)添加到PATH環(huán)境變量里了。接下來(lái)需要在該目錄下新建一個(gè)名為node-echo.cmd的文件,文件內(nèi)容如下:

@node "C:\User\user\bin\node-echo.js" %*

這樣處理后,我們就可以在任何目錄下使用node-echo命令了。

工程目錄

了解了以上知識(shí)后,現(xiàn)在我們可以來(lái)完整地規(guī)劃一個(gè)工程目錄了。以編寫(xiě)一個(gè)命令行程序?yàn)槔?,一般我們?huì)同時(shí)提供命令行模式和API模式兩種使用方式,并且我們會(huì)借助三方包來(lái)編寫(xiě)代碼。除了代碼外,一個(gè)完整的程序也應(yīng)該有自己的文檔和測(cè)試用例。因此,一個(gè)標(biāo)準(zhǔn)的工程目錄都看起來(lái)像下邊這樣。

- /home/user/workspace/node-echo/   # 工程目錄
    - bin/                          # 存放命令行相關(guān)代碼
        node-echo
    + doc/                          # 存放文檔
    - lib/                          # 存放API相關(guān)代碼
        echo.js
    - node_modules/                 # 存放三方包
        + argv/
    + tests/                        # 存放測(cè)試用例
    package.json                    # 元數(shù)據(jù)文件
    README.md                       # 說(shuō)明文件

其中部分文件內(nèi)容如下:

/* bin/node-echo */
var argv = require('argv'),
    echo = require('../lib/echo');
console.log(echo(argv.join(' ')));

/* lib/echo.js */
module.exports = function (message) {
    return message;
};

/* package.json */
{
    "name": "node-echo",
    "main": "./lib/echo.js"
}

以上例子中分類存放了不同類型的文件,并通過(guò)node_moudles目錄直接使用三方包名加載模塊。此外,定義了package.json之后,node-echo目錄也可被當(dāng)作一個(gè)包來(lái)使用。

NPM

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

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

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

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

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

下載三方包

需要使用三方包時(shí),首先得知道有哪些包可用。雖然npmjs.org提供了個(gè)搜索框可以根據(jù)包名來(lái)搜索,但如果連想使用的三方包的名字都不確定的話,就請(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)下載最新版三方包,如果想要下載指定版本的話,可以在包名后邊加上@,例如通過(guò)以下命令可下載0.0.1版的argv。

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

如果使用到的三方包比較多,在終端下一個(gè)包一條命令地安裝未免太人肉了。因此NPM對(duì)package.json的字段做了擴(kuò)展,允許在其中申明三方包依賴。因此,上邊例子中的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ù)包中申明的三方包依賴自動(dòng)下載進(jìn)一步依賴的三方包。例如,使用npm install node-echo命令時(shí),NPM會(huì)自動(dòng)創(chuàng)建以下目錄結(jié)構(gòu)。

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

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

安裝命令行程序

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

$ 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": {              # 三方包依賴,需要指定包名和版本號(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è)保證后,在申明三方包依賴時(shí),除了可依賴于一個(gè)固定版本號(hào)外,還可依賴于某個(gè)范圍的版本號(hào)。例如"argv": "0.0.x"表示依賴于0.0.x系列的最新版argv。NPM支持的所有版本號(hào)范圍指定方式可以查看官方文檔。

更多

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

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

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

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

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

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

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

  • 使用npm unpublish @可以撤銷發(fā)布自己發(fā)布過(guò)的某個(gè)版本代碼。

相關(guān)文章

  • Node.js API詳解之 readline模塊用法詳解

    Node.js API詳解之 readline模塊用法詳解

    這篇文章主要介紹了Node.js API詳解之 readline模塊用法,結(jié)合實(shí)例形式詳細(xì)分析了Node.js API中readline模塊基本函數(shù)、功能、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-05-05
  • Node解決簡(jiǎn)單重復(fù)問(wèn)題系列之Excel內(nèi)容的獲取

    Node解決簡(jiǎn)單重復(fù)問(wèn)題系列之Excel內(nèi)容的獲取

    這篇文章主要給大家介紹了關(guān)于利用Node解決簡(jiǎn)單重復(fù)問(wèn)題系列之Excel內(nèi)容獲取的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧。
    2018-01-01
  • Node環(huán)境中JS代碼缺少window對(duì)象的原因和解決方案

    Node環(huán)境中JS代碼缺少window對(duì)象的原因和解決方案

    你可能會(huì)在某些情況下需要在Node環(huán)境下運(yùn)行JavaScript代碼,但你也可能會(huì)遇到一個(gè)常見(jiàn)的問(wèn)題:缺少window環(huán)境,在本文中,我們將深入探討這個(gè)問(wèn)題的原因,并提供解決方案,需要的朋友可以參考下
    2023-08-08
  • Linux環(huán)境部署node服務(wù)并啟動(dòng)詳細(xì)步驟

    Linux環(huán)境部署node服務(wù)并啟動(dòng)詳細(xì)步驟

    最近用node.js開(kāi)發(fā)了一個(gè)web項(xiàng)目,下面這篇文章主要給大家介紹了關(guān)于Linux環(huán)境部署node服務(wù)并啟動(dòng)的詳細(xì)步驟,文中通過(guò)圖文以及示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • nodejs集成sqlite使用示例

    nodejs集成sqlite使用示例

    本篇文章主要介紹了nodejs集成sqlite使用示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • 使用nodejs搭建微信小程序支付接口的詳細(xì)過(guò)程

    使用nodejs搭建微信小程序支付接口的詳細(xì)過(guò)程

    前段時(shí)間做微信支付,遇到了很多坑,網(wǎng)上也沒(méi)有講解的特別明白的,通過(guò)借鑒各路人才的經(jīng)驗(yàn),最后也完成了,下面這篇文章主要給大家介紹了關(guān)于使用nodejs搭建微信小程序支付接口的詳細(xì)過(guò)程,需要的朋友可以參考下
    2022-12-12
  • Nodejs中調(diào)用系統(tǒng)命令、Shell腳本和Python腳本的方法和實(shí)例

    Nodejs中調(diào)用系統(tǒng)命令、Shell腳本和Python腳本的方法和實(shí)例

    這篇文章主要介紹了Nodejs中調(diào)用系統(tǒng)命令、Shell腳本和Python腳本的方法和實(shí)例,本文給出了利用子進(jìn)程調(diào)用系統(tǒng)命令、執(zhí)行系統(tǒng)命令、調(diào)用傳參數(shù)的shell腳本、調(diào)用python腳本的例子,需要的朋友可以參考下
    2015-01-01
  • node實(shí)現(xiàn)將json轉(zhuǎn)為excel

    node實(shí)現(xiàn)將json轉(zhuǎn)為excel

    平時(shí)我們寫(xiě)代碼處理的數(shù)據(jù)格式一般都是json格式的數(shù)據(jù),但有時(shí)候我們也需要將數(shù)據(jù)轉(zhuǎn)為excel格式進(jìn)行保存或分享,所以下面我們就來(lái)學(xué)習(xí)一下如何通過(guò)node實(shí)現(xiàn)json轉(zhuǎn)excel吧
    2024-11-11
  • 深入理解Puppeteer的入門(mén)教程和實(shí)踐

    深入理解Puppeteer的入門(mén)教程和實(shí)踐

    這篇文章主要介紹了深入理解Puppeteer的入門(mén)教程和實(shí)踐,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-03-03
  • 如何在Express4.x中愉快地使用async的方法

    如何在Express4.x中愉快地使用async的方法

    這篇文章主要介紹了如何在Express4.x中愉快地使用async的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11

最新評(píng)論