自定义node.js上的建议/最佳实践CLI工具配置文件:位置和命名?

Gav*_*vin 7 command-line-interface node.js npm

我会尽量保持这个问题的简短,但请分为两部分,请:

  1. 应该在哪里保存nodejs/npm CLI工具的配置文件?
  2. 他们应该叫什么?

假设我编写了一个node.js CLI工具,例如,抓取今天的天气并在终端中显示它.我叫它weather-getter.注意,主要目标不是以编程方式调用,而是像BASH一样输入终端.它旨在通过在全局安装后键入其简单名称通过用户的local/bin中的目录来运行.(安装时不需要Sudo.)

该项目将通过npm正常安装.它可以通过以下参数接收邮政编码:

gavin@localhost:~$ weather-getter -z "12345"
Run Code Online (Sandbox Code Playgroud)

好的程序运行正常.我的下一步是允许用户在某处保存配置文件,并从该配置文件中提取默认值.类似于.vimrc文件.此配置可能如下所示:

{
  "zipcode": "12345",
  "language": "en",
  "unit": "fahrenheit"
}
Run Code Online (Sandbox Code Playgroud)

我想它应该以点开头.我还假设它应该位于npm模块安装中,而不是〜/.或者我应该考虑像许多其他程序一样使用〜// etc /〜/ .config〜/ .local?节点程序是否应该尝试使用公共目录,例如〜/ .config/node /〜/ .config/npm /?如果文件在那里,它应该在没有点的情况下开始吗?

注意:我的问题不是关于使用node.js读取/写入文件,而是关于配置位置和命名约定的建议.谢谢!

Rob*_*ann 5

由于这是安装在系统路径中的通用CLI应用程序(仅在Node.js中实现),因此应遵循为目标操作系统建立的最佳实践或规则.

Unix/Linux/OS X,类似

按优先顺序,这些将是(但不限于):

  • ~ (用户的主文件夹) - 许多程序在其主目录中存储用户级配置,通常在带点前缀的文件中,后跟应用程序的名称(或类似) - 即 ~/.weather-getter

  • /usr/local/etc,/etc- 系统级配置文件.这些应该通常适用于系统中的所有用户,因此应该优先于主文件夹中的设置.这两个etc路径之间的区别通常是前者用于用户安装的程序,而后者用于系统级程序(对于使用Homebrew的 Mac用户尤其如此).但是,这种区别并不总是得到尊重,因此应检查两个位置的配置文件(最好是/etc目录的优先级较低).

  • 应用程序的根目录 - 这些应该是应用程序的默认设置,当找不到用户或系统配置时,这是一个回退.

  • 如果需要,可以考虑其他位置.

视窗

%APPDATA%如果您的应用程序允许GUI或至少CLI配置管理,或者Windows注册表(例如,使用winreg),这通常位于目录中的某个位置.我个人对Windows开发/ CLI没什么经验,所以我欢迎任何有关此主题的进一步评论或答案.我相信使用用户的homefolder也是可以接受的,只要该文件可以被标记为隐藏(因此它不会使视图混乱).

一些一般性考虑

  • 许多CLI应用程序将其默认配置安装到上述位置之一,以便用户在配置应用程序时有一个良好的起点
  • 当存在多个配置文件时,它们处理配置选项的方式(它们是否以某种顺序合并?只使用了一个?哪个优先??)完全取决于您,但您应该在文档中明确说明,甚至可能在配置文件中提及它
  • 如果您的应用程序需要多个配置文件,则最好将它们分组到自己的文件夹中

有关dotfiles的更新

某些文件或文件夹以点为前缀的原因是将它们隐藏在用户的普通视图中(即通过GUI浏览其主目录时).因此,在将配置文件存储在用户正常操作的目录中时,通常会使用以前缀为前缀的文件/文件夹名称,但在将配置文件存储在系统级文件夹中时则不这样做.