亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

通過nodejs實(shí)現(xiàn)自定義命令

scola666 / 1945人閱讀

摘要:通過給這些命令輸入不同的參數(shù),可以得到相應(yīng)的功能。通過篇文章,你將學(xué)會(huì)如何一步步地編寫運(yùn)行在弄的環(huán)境的自定義命令。其中可以通過這條命令查詢到將配置文件中的鏈接到全局看到這里,你應(yīng)該了解我們正是借助第二步,實(shí)現(xiàn)自定義命令的。

歡迎關(guān)注我的公眾號(hào)睿Talk,獲取我最新的文章:

一、前言

我們開發(fā)用到的一些庫(kù)都有自己特有的命令,如webpack,babel和jest等。通過給這些命令輸入不同的參數(shù),可以得到相應(yīng)的功能。通過篇文章,你將學(xué)會(huì)如何一步步地編寫運(yùn)行在弄的環(huán)境的自定義命令。

二、編寫命令文件

新建一個(gè)文件夾cmd,然后建一個(gè)main.js文件,文件內(nèi)容如下:

#!/usr/bin/env node

console.log("hello command");

注意一定要有這行代碼:#!/usr/bin/env node,這行代碼叫shebang或者hashbang,它會(huì)告訴操作系統(tǒng)在運(yùn)行這個(gè)文件文件的時(shí)候,需要用node的解析器來(lái)解析。

這時(shí)候如果想直接運(yùn)行這個(gè)命令,將會(huì)得到一個(gè)報(bào)錯(cuò):

需要給這個(gè)文件添加一個(gè)執(zhí)行的權(quán)限:

chomd +x main.js

這樣就能正常的運(yùn)行這一命令了:

下一步,我們將借助npm的特性,來(lái)給我們的命令命名。

三、使用npm定制命令

先在cmd目錄初始化npm

npm init

然后在生成的package.json文件中添加以下內(nèi)容:

"bin":{
    "mycmd": "main.js"
  },

然后再運(yùn)行

npm link

完成后就可以直接輸入mycmd命令得到結(jié)果了

此時(shí)你可能會(huì)感到疑惑,為什么通過npm link就能實(shí)現(xiàn)自定義命令呢?下面我們?cè)僭敿?xì)了解npm link的運(yùn)作機(jī)制。

四、npm link

輸入命令后,npm幫我們做了以下這些工作

在全局的npm包環(huán)境中幫我們建立一個(gè)軟鏈,路徑在{prefix}/lib/node_modules/。其中prefix可以通過這條命令查詢到:

npm get prefix

將配置文件中的bins鏈接到全局:{prefix}/bin/{name}

看到這里,你應(yīng)該了解我們正是借助第二步,實(shí)現(xiàn)自定義命令的。但第一步的命令又有什么作用呢?

npm link第一步所做的工作將會(huì)為我們本地開發(fā)工具庫(kù)帶來(lái)很大的幫助。當(dāng)我們的工具庫(kù)還沒完成的時(shí)候,我們并不想將其npm publish出去,而是希望先在本地調(diào)試一下。這時(shí)候,可以進(jìn)入調(diào)試的目標(biāo)項(xiàng)目,比如cmd-test文件夾,運(yùn)行以下命令:

npm link cmd

其中cmd就是我們的包名。運(yùn)行完此命令后,npm會(huì)幫我們?cè)赾md-test文件夾中的node_modules目錄下建立一個(gè)cmd的軟鏈。當(dāng)然,前提是cmd-test文件夾中已經(jīng)有node_modules目錄,否則會(huì)一直向上找node_modules目錄直到根目錄位置。你也可以手動(dòng)建一個(gè)。

npm link cmd的效果跟npm install cmd效果是完全一樣的,我們可以使用link過來(lái)的所有功能,這對(duì)我們本地調(diào)試工具庫(kù)非常有幫助。

如果要去除這個(gè)軟鏈,執(zhí)行下面的命令就可以了:

npm unlink cmd

說(shuō)得有點(diǎn)遠(yuǎn)了,再扯回到自定義命令上面來(lái)。如果我們希望給命令傳入?yún)?shù),該如何做呢?

五、commander

我們可以借助commander這個(gè)工具,幫我們獲取到從process.argv里面?zhèn)鬟M(jìn)來(lái)的參數(shù),使用方法也很簡(jiǎn)單:

#!/usr/bin/env node

/**
 * Module dependencies.
 */

var program = require("commander");

program
  .version("0.1.0")
  .option("-p, --peppers", "Add peppers")
  .option("-P, --pineapple", "Add pineapple")
  .option("-b, --bbq-sauce", "Add bbq sauce")
  .option("-c, --cheese [type]", "Add the specified type of cheese [marble]", "marble")
  .parse(process.argv);

console.log("you ordered a pizza with:");
if (program.peppers) console.log("  - peppers");
if (program.pineapple) console.log("  - pineapple");
if (program.bbqSauce) console.log("  - bbq");
console.log("  - %s cheese", program.cheese);

通過option這個(gè)函數(shù)來(lái)定義支持的參數(shù),然后在使用的時(shí)候直接通過獲取program的屬性拿到傳進(jìn)來(lái)的參數(shù)。具體用法請(qǐng)看官方文檔:commander

六、總結(jié)

本文介紹了如何在 Node 開發(fā)環(huán)境下定制自己的命令,完成一些日常的自動(dòng)化任務(wù)。如果這些任務(wù)比較通用,還可以發(fā)布到 npm,為更多的人提升效率。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/90415.html

相關(guān)文章

  • nodejs 寫一個(gè)命令行工具 :創(chuàng)建 react 組件的命令行工具

    摘要:用寫一個(gè)命令行工具創(chuàng)建組件的命令行工具前言上周,同事抱怨說(shuō)怎么不能像那樣,使用命令行工具來(lái)生成一個(gè)組件。為什么不能將這個(gè)過程交給程序去做呢當(dāng)天晚上,我就仿照的,寫了一個(gè)生成組件的命令行工具。 用 nodejs 寫一個(gè)命令行工具 :創(chuàng)建 react 組件的命令行工具 前言 上周,同事抱怨說(shuō) react 怎么不能像 angular 那樣,使用命令行工具來(lái)生成一個(gè)組件。對(duì)呀,平時(shí)工作時(shí),想要...

    WelliJhon 評(píng)論0 收藏0
  • Nodejs模塊加載與ES6模塊加載實(shí)現(xiàn)

    摘要:以后需要引用模塊的變量函數(shù)類就在這個(gè)模塊對(duì)象的取出,即使再次進(jìn)來(lái)模塊也不會(huì)重新執(zhí)行,只會(huì)從緩存獲取。所以對(duì)相同模塊的再次加載都是優(yōu)先緩存方式,核心模塊的緩存檢查依然優(yōu)先于文件模塊。內(nèi)建模塊導(dǎo)出啟動(dòng)會(huì)生成全局變量,提供方法協(xié)助加載內(nèi)建模塊。 原始時(shí)代 作為一門語(yǔ)言的引入代碼方式,相較于其他如PHP的include和require,Ruby的require,Python的import機(jī)制,...

    陳江龍 評(píng)論0 收藏0
  • gulp和webpack入門介紹

    摘要:介紹說(shuō)明的包管理器,用于插件管理包括安裝卸載管理依賴等使用安裝插件命令提示符執(zhí)行插件名稱??偨Y(jié)安裝新建文件全局和本地安裝安裝插件新建文件通過命令提示符運(yùn)行任務(wù)。 showImg(https://segmentfault.com/img/remote/1460000010873466); 前言 眾所周知目前比較火的工具就是gulp和webpack,但webpack和gulp卻有所不同,本...

    hsluoyz 評(píng)論0 收藏0
  • 十分鐘搭建centos+nodejs+nestjs+caddy+pm2線上環(huán)境

    摘要:安裝及線上環(huán)境配置安裝官方安裝說(shuō)明地址執(zhí)行命令至此,安裝完成版本查看安裝官方文檔地址首次安裝執(zhí)行命令以后創(chuàng)建項(xiàng)目只需在你需要的路徑下執(zhí)行開發(fā)測(cè)試環(huán)境下直接執(zhí)行以下命令啟動(dòng)項(xiàng)目后面加上可以在修改現(xiàn)有文件后自動(dòng)進(jìn)行重啟瀏覽器輸入即可 centos+node.js+nest.js+caddy+pm2安裝及線上環(huán)境配置 node.js安裝 官方安裝說(shuō)明地址 https://github.com...

    xiaoqibTn 評(píng)論0 收藏0
  • webpack工程化集成React技術(shù)棧(一)

    項(xiàng)目開始前,我們先聊一聊關(guān)于項(xiàng)目的一些說(shuō)明。該項(xiàng)目起始于2017年初,當(dāng)時(shí)公司主要技術(shù)棧為gulp+angular,鑒于react的火熱的生態(tài),在公司決定研發(fā)bss管理系統(tǒng)時(shí)選用react開發(fā),目的也是為react native打下基礎(chǔ),以解決后期公司大前端技術(shù)棧的逐步成熟。(當(dāng)時(shí)沒有選擇vue開發(fā)的主要原因是weex生態(tài)還不夠特別成熟),既然決定換新,項(xiàng)目的構(gòu)建也跟著一起換,從gulp轉(zhuǎn)向火熱的...

    tianhang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<