如何构建Node CLI应用程序

时间:2018-06-27 05:59:41

标签: javascript node.js command-line-interface

我想编写一个节点cli应用程序,我想知道我应该如何构造该应用程序。我对node来说还很陌生,并且对构建此类应用程序时使用的所有设计模式感到困惑。 我希望能够从命令行调用应用程序,但也可以将其用作节点模块以进行更好的测试。

目前,我有一个文件,其中包含很多直接从cli调用的函数,但是我觉得这很难维护。

关于如何做这样的事情,有什么好的著作吗?我看着rimraf,但令我更加困惑。谢谢您的时间

2 个答案:

答案 0 :(得分:2)

我不知道是否有“正确”的方式来做,但是我可以告诉您我如何处理与您类似的问题。我想创建一个CLI和一个Visual Studio代码插件,这样人们就可以使用VSC和CLI(对于不使用VSC的人)的功能,所以我采取的方法是将所有逻辑在其自己的程序包中,然后创建其他两个程序包,其中包括第一个程序包,一个用于CLI,另一个程序包需要“逻辑”程序包。

在CLI软件包中,您将仅具有与命令处理严格相关的代码,然后真正的问题出现在逻辑软件包中。以我为例,VSC插件包只有很少的代码行,只有配置和对所需功能的调用。

然后针对代码的结构提出一些建议:

  • 仅公开严格必要的内容
  • 根据通用功能将您的代码隔离在不同的文件/类中(并转到第1点)
  • 测试您的代码
  • 整理代码

但是这些是常识和独立于语言的建议。

答案 1 :(得分:0)

没有一种“标准”的方式来构建Node.js应用程序,但是您会注意到许多作者遵循类似的模式。与其让一个文件包含所有代码,不如将其拆分为模块,按功能分组。看看Github上的这个仓库,它对Node.js最佳实践https://github.com/i0natan/nodebestpractices#1-project-structure-practices有一些很好的建议。

我还要添加几个指针:确保记录了所有错误,请考虑为此使用Winston.js之类的东西。如果发生严重错误,还应具有某种机制来重启服务。 Forever.js。

确保同样要进行单元测试,其中有一些不错的测试框架,包括Jasmine,Mocha和Cucumber.js。