npm 包 command-files 使用教程

简介

npm 包 command-files 是一个帮助开发者构建可维护的命令行应用程序的工具。使用该工具可以快速创建命令行应用程序,并且易于维护和扩展。

同时,command-files 也是一个非常有用的工具,可以让开发者在开发过程中更加专注于代码的实现,而不需要关注命令行交互方面的细节。

使用篇

安装

在开始使用 command-files 之前,需要先安装该工具。可以在命令行中使用以下命令进行安装:

--- ------- ------------- ----------

创建命令

一般来说,我们需要通过编写代码来创建自己的命令行程序。

----- - ------- - - ---------------------

-------------------------

-------
    ----------------
    ------------------ ----- -- - -----------
    ------------ ------- -------- -- ------- ------ -------
    ------------ -------- -------- -- ------- -------- ---- -------------
    ------------- -------- -- -
        ----------------- ----- -- ---------

        -- ------------- -
            -------------------- ------ --------
        -

        -- -------------- -
            -------------------- -------- ---- --------------
        -
    ---

----------------------------

上述代码中,我们使用了 commander 包来构建命令行应用程序,其中包含一个名为 list 的子命令。

在该子命令中,我们通过 option 方法来定义了两个选项,-a 和 -l。

接着,在 action 方法中编写实际的代码逻辑,来处理这些选项。

运行命令

要运行我们创建的命令行程序,只需要在终端中输入以下命令即可:

---- -------- ---- --------- ---

深入篇

接下来,我们将深入 command-files 的源码,来进一步了解其实现原理。

文件结构

在深入了解 command-files 实现原理之前,我们先来看一下其文件组织结构。

----
  ------------------   -- -----
  ------------         -- ------------- ----
  -------------------- -- -----
  --------------       -- ------
-----
  --------              -- ----
     ------------------
     --------------
     ------------
  ---------------       -- ----
     ----------------------
  ------------------    -- ------

核心模块-程序类Program

程序类 program 被设计成一个单例模式,负责创建命令行程序,并且存储解析器所解析的参数。

程序类 program 内部使用了标记模式来定义命令和选项。标记模式是一种将一组参数解析为一个包含多个命令和选项的对象的方式。

--------- ----------------- -
  ----- -------
  ------ -------
  ------- -------
  --------- -------------------
  -------- ---------------
-

--------- ---------------- -
  ----- -------
  ------ -------
  ------- -------
  -------------- --------
-

----- ------- -
    ------- ------------------- ------------------- - ---
    ------- -------- ------------------ - ---
    ------- --------- ------- -------- ---------------- - ---
    ------- ----- -------- - ---

    -- ----------
    ------------- ------- ------ -------- --------------
    -------------- ------- ------ ------- -------------- --------- -------------

    -- -------
    ----------- ---------- -----

    -- ----
    ------ --------------
-

命令的定义

定义一个需要通过命令行执行的命令,需要调用 program 的 command 方法。

--------- ------------- -
    ------------ -------- --------------
    ----------------- -------- --------------
    --------------- ---------------- -----
    ------------ ------- ------ ------- -------------- --------- -------------
-

在 command 方法的基础上,我们还可以调用 alias 和 description 方法,来定义该命令的别名和说明。

同时,我们还可以定义该命令所支持的选项,通过调用 option 方法来实现。

解析器的实现

command-files 中的解析器使用了 argv-parser 库来解析命令行参数。

----- ---------- -
    ------ ------ ----------- --------- -------- -------------------- ---------- -
        ----- ------ - --- ---------------- ---------
        ------ ---------------
    -
-

解析器内部包含两个方法,parse() 和 parseArgv()。

其中,parse() 方法接收命令行参数,调用 parseArgv() 方法来解析参数。parseArgv() 方法根据命令行参数的不同,解析出对应的命令和选项,并将它们保存在 program 对象的 commands 和 options 属性中。

命令的加载

command-files 会自动加载当前目录下的所有以 .cmd.ts 或 .cmd.js 结尾的文件作为命令。

load-commands.ts 中定义了 loadCommands 方法,该方法会加载所有匹配规则的文件,并将它们作为命令来注册。还可以给这些文件定义缺省值。

----- ------------ -
    ------ ----- ------------- -------- ----- --- - --- ---- - ----------- ----------- - --- -
        ----- ----- - ----- ------------ - ---- ---- --------- ----- ---

        -------------------- ------- -- -
            ----- -------- - --------- ------
            ----- ------- - -------------------------------------- ----
            ----- --- - ------------------

            -- ------- ----------- --- -------- -- ----------------- -
              ----------------------------- ------- ------- ---- --------- -- ------- ---- --- ---- - ----- ------- ------ ---- ------- --- --- -------------
              -------
            -

            ------------------------
              ------------------------------------ -- -- -
              ----------------------------------------- ----------
          ---

        ----------------------------
        ----- --------------
    -
-

load 方法将依赖注入 program 以便 command 方法在其中定义命令。

总结

command-files 提供了一个简单而又强大的工具,可帮助开发者快速创建和扩展 CLI 工具。该工具的拓展和维护都非常容易,帮助开发者聚焦于代码实现,提高开发效率。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6005596081e8991b448d6cd2


猜你喜欢

  • npm 包 wj-react-native-gpuimage 使用教程

    wj-react-native-gpuimage 是一款基于 React Native 的 GPU 图像处理库,它提供了多种滤镜、效果和特效,能够轻松地完成图片处理、美化等操作。

    2 年前
  • npm包 @nfcampos/react-native-vector-icons使用教程

    在前端开发中,矢量图标在应用程序中扮演着重要的角色,因为它们可以在不牺牲分辨率的情况下自由缩放。React Native作为一种流行的跨平台解决方案,也可以使用矢量图标,使用@nfcampos/rea...

    2 年前
  • npm 包 behaviour-js 使用教程

    在前端开发中,我们经常需要动态控制页面元素的行为和交互,比如鼠标悬停、点击事件等等。而为了更方便地实现这些行为,一些开发者不得不编写大量的 JavaScript 代码来控制 DOM 元素的状态。

    2 年前
  • npm 包 js-popup 使用教程

    在前端开发中,经常会遇到需要实现弹出框的需求,而 js-popup 就是一个非常不错的解决方案。这个 npm 包提供了一种简单而灵活的方式来实现弹出框,可以为我们的项目节省大量的时间和精力。

    2 年前
  • npm 包 ng2-custom-slider 使用教程

    在前端开发中,自定义滑块是一个很常见的需求,一些 UI 框架也提供了自带的滑块组件,例如 Angular 框架中的 MatSlider。不过,有时候我们需要更加个性化地自定义滑块,这时候就需要借助一些...

    2 年前
  • npm 包 node-red-contrib-azureiotc2d 使用教程

    随着物联网技术的快速发展,越来越多的设备开始将数据上传至云端进行处理分析。作为微软推出的 IoT 中心服务,Azure IoT 可以让用户在云端对设备数据进行分析和挖掘,从而帮助用户更好地管理设备。

    2 年前
  • npm 包 Package-Extractor 使用教程

    前言 npm 是世界上最大的软件注册表,由 Node.js 基金会创建和维护。它的主要功能是帮助开发者分享、发布、发现并安装 Node.js 包。 Package-Extractor 是一个 Node...

    2 年前
  • npm 包 periodic-ping 使用教程

    前言 在前端开发过程中,我们经常需要测试网站的联网情况以确保其正常工作。而 periodic-ping 就是一个可以定时进行网站网络状况监测的 npm 包。本文将介绍使用 periodic-ping ...

    2 年前
  • npm 包 hifizz-hello-npm 使用教程

    简介 npm 是 Node.js 的包管理器,可以用于从 npm 服务器上安装并管理自己编写的 JavaScript 模块,也可直接使用其他人编写并发布的模块。hifizz-hello-npm 是一个...

    2 年前
  • npm 包 react-role-manager 使用教程

    介绍 react-role-manager 是一个优秀的 npm 包,可以帮助前端开发人员更好地管理用户权限,提高开发效率。本文将为大家详细介绍 react-role-manager 的使用方法,并附...

    2 年前
  • npm 包 rtl-antd-mobile 使用教程

    在前端开发中,我们经常使用各种第三方库和框架来提高开发效率和代码质量。npm 是一个面向 Node.js 的包管理器,许多优秀的 JavaScript 库和框架都发布在 npm 上。

    2 年前
  • npm 包 vz-rn-joi 使用教程

    简介 vz-rn-joi 是一个为 React Native 应用提供数据校验的 npm 包。它基于 joi 数据校验库,提供了一些专门针对 React Native 的校验规则和可定制化的错误提示机...

    2 年前
  • npm 包 hyper-macos 使用教程

    在前端开发过程中,我们常常需要使用命令行工具来完成一些操作。而 Hyper 是一个基于 Electron 的终端,它支持插件扩展,可以让我们的终端变得更加好看、高效和易用。

    2 年前
  • npm 包 qijian 使用教程

    在前端开发中,我们经常需要对日期进行格式化、计算和操作。然而,这通常需要大量的代码和时间,而且容易出错。为了方便处理日期,有一个非常流行的 npm 包叫做 qijian。

    2 年前
  • npm 包 vuc 使用教程

    前言 随着前端技术的不断发展,越来越多的开源项目涌现出来。npm 是目前最流行的 JavaScript 包管理工具,它能让你快速地下载安装各种模块和库,为开发者带来了极大的便利。

    2 年前
  • npm 包 objectarrayindexof 使用教程

    在前端开发中,我们经常需要对数组或者对象进行操作,包括查找、修改、删除等。其中,查找某个对象或者数组在另一个数组或者对象中的索引值是一项常见操作。npm 包 objectarrayindexof 就是...

    2 年前
  • npm包Windows使用教程

    什么是npm包 npm包(Node.js包管理器)是Node.js的包管理工具,用于安装和管理Node.js模块。npm包是一个庞大的开源生态系统,其中包含了来自全球各地开发者的数百万个开源软件包。

    2 年前
  • npm 包 sentence-extractor 使用教程

    前言 现如今,随着互联网技术的发展,许多网站和应用程序的前端设计变得越来越复杂,其中涉及到的内容也越来越多。因此,在前端开发过程中,处理文本数据成为一件非常重要的事情。

    2 年前
  • npm 包 @moonandyou/chrome-path-cli 使用教程

    1. 前言 在前端开发中,我们经常需要使用 Chrome 浏览器进行调试和测试。而在一些场景下,我们需要获取 Chrome 浏览器的路径,例如运行 End-to-End 测试时需要传入 Chrome ...

    2 年前
  • npm 包 backender-slim 使用教程

    在前端开发中,我们经常需要与后端进行数据交互。而在处理数据时,我们需要进行一些格式化、处理或验证操作,这时候就可以使用 backender-slim 这个 npm 包。

    2 年前

相关推荐

    暂无文章