nodejs中的`rc`文件是什么?


80

我有一个关于不同的一些问题rc的文件在一个典型的节点应用,如.npmrc.babelrc等。

  • 什么是rc文件,我知道它是模块的runtime-config,但还有其他什么?
  • rc文件是否必须遵循.[module]rc命名约定,还是只是推荐的格式?
  • 支持哪些格式?我看过yaml和json格式,这取决于模块使用的读者吗?
  • 如何从模块的角度访问rc文件?是否将其命名为[module]rc可以自动供模块使用?如果可以,它将在哪里提供?
  • 还是模块应该像使用该模块的应用程序中的任何其他文件一样访问文件,并期望它采用可理解的格式?(这是我现在正在做的,采用json格式)
  • 我也看到有人要求package.json加载配置。推荐哪个,package.json还是一个rc文件?
  • 另外它是如何从一个JavaScript文件不同,好像gulpfile.jsmodule.exports?(我的意思是建议,我当然知道js和rc文件的区别和优点)

每次我在google中搜索时,我都会在这里这里结束,这是一个读取rc文件的工具,但没有说明它们是什么,或者它们是如何构造和/或连接到模块的。

任何见解都是非常有用的。谢谢


这些文件没有什么特别的,不同的模块“正好发生”以使用类似的策略。
菲利克斯·克林

Answers:


54

所以首先,问得好。

rc点文件是配置文件,其使用,格式和整体含义可能有所不同。您可以创建.[whatever name you like]rc文件来通知您正要创建的任何软件包(前提是另一个软件包没有在寻找相同的软件包)。通常,它们对于作用源代码且需要针对项目进行某些调整的某种工具很有用。我的理解是,在过去的几年中,类似的文件在UNIX系统中起着重要的作用,并且这个想法一直存在。

简而言之:

  • 它们不特定于节点。
  • 他们只是另一个文件
  • 就格式而言,它们几乎可以是任何东西-取决于您将用来解析和读取它们的内容。YAML,JSON和ini可能是最常见的(至少我已经看过)。
  • 在大多数情况下,他们似乎遵循惯例 .[program or binary name]rc
  • package.json文件可以包含适合于配置的外部元数据,这仅取决于您的项目是期望.rc文件还是期望文件package.json(或者像babel一样)

也可以看看:

作为一个非常简单的示例:

假设您想阅读.foorc使用JSON编码的文件:

{
  "cool": true
}

您可以执行以下操作:

'use strict';
const fs = require('fs');
fs.readFile('./.foorc', 'utf8', (err, data) => {
  if (err) throw new Error(err);
  console.log(JSON.parse(data));
})

有很多更好的方法可以做到这一点,但是您可以轻松地编写自己的程序或找到一个支持YAML,ini等的程序包。也可以解析并提供API的其他一些优点(例如rc


因此,程序包将像访问其他任何文件一样对它进行访问吗?require('./.modulerc')
Gopikrishna S

取决于您所说的“包装”的含义,但是可以。我将使用简单示例进行更新
markthethomas

17

它不特定于Node或Babel,但*rc文件通常是Unix系统中的配置文件

来自维基百科

配置文件不仅仅可以修改设置,它们还经常(以“ rc文件”的形式)在启动时运行一组命令(例如,shell的“ rc文件”可能会指示shell更改目录,运行某些程序,删除或创建文件-许多事情不涉及在shell本身中修改变量,而在shell的dotfile中不涉及)。该约定是从CTSS操作系统上的“ runco​​m文件”中借用的。

此功能 可以并且已经扩展到用解释 语言 编写的程序,这样配置文件实际上是另一个重写或扩展或定制原始程序的程序; Emacs是最突出的例子。

该“RC”命名约定“RC文件”,通过上文提到的“runco​​m”设施鼓舞,并不代表“资源配置” “运行时配置”,或 “遥控器”因为经常猜错。

传统上,“ rc”文件是以“(。)rc”后缀结尾的文件,其中包含用作相关程序的配置信息的数据和信息。通常,该程序的名称是rc文件名称的第一部分, 后缀“(。)rc”用于指示文件的用途,例如“ .xinitrc”“。vimrc”“。bashrc”“ xsane.rc”

Runcom

Unix:通过启动脚本/ etc / rc,从CTSS系统1962-63上的runco​​m文件中获取

脚本文件,其中包含应用程序(或整个操作系统)的启动指令,通常是一个文本文件,其中包含某种类型的命令,这些命令在系统运行时可能已经手动调用,但是每次系统启动时都会自动执行。另请参见点文件。

换句话说,“ rc”只是从六十年代开始就一直存在的东西,并且自从使用Node,Babel以及许多其他许多程序以来,就经常用于配置文件中的配置文件。

“ rc”文件没有什么特别的,它们实际上可以包含任何类型的数据,没有规范或其他限制。


嗯..所以这完全取决于读者来决定要做什么,对吗?有推荐的访问方式吗?
Gopikrishna S

@GopikrishnaS-由于“ * rc”文件几乎可以是任何内容,包括javascript,JSON,纯文本,XML,YAML或其他任何内容,因此,如何解析文件完全取决于其包含的内容。
adeneo

6

RC指

  • 运行命令
  • 运行时配置

https://zh.wikipedia.org/wiki/运行命令

“ rc”后缀可以追溯到Unix的祖父母CTSS。它具有一个称为“ runco​​m”的命令脚本功能。早期的Unix使用“ rc”作为操作系统启动脚本的名称,以表示对CTSS runco​​m的敬意。



@wyu您指的是错误的网址。Run_command代替Run_commands。@rselvagenesh给出了正确的URL。
巴拉

@bala在我评论后,答案中的URL已被编辑
wyu

@wyu知道了。
巴拉
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.