Was sind RC-Dateien in NodeJS?

80

Ich habe einige Fragen in Bezug auf verschiedene rcDateien in einer typischen Knoten - Anwendung, wie .npmrc, .babelrcusw.

  • Was ist eine RC-Datei? Ich weiß, dass es sich um eine Laufzeitkonfiguration für das Modul handelt, aber sonst noch etwas?
  • Muss die RC-Datei der .[module]rcNamenskonvention entsprechen oder ist sie nur ein empfohlenes Format?
  • Welche Formate werden unterstützt? Ich habe sowohl Yaml- als auch JSON-Formate gesehen. Hängt es vom Leser ab, den das Modul verwendet?
  • Wie greife ich aus der Perspektive eines Moduls auf eine RC-Datei zu? Wird es [module]rcdem Modul automatisch zur Verfügung gestellt, wenn es so benannt wird? Wenn ja, wo wird es verfügbar sein?
  • Oder sollte das Modul wie jede andere Datei aus der App, die das Modul verwendet, auf die Datei zugreifen und erwarten, dass sie in einem verständlichen Format vorliegt? (Dies ist, was ich gerade mache, mit JSON-Format)
  • Ich habe auch Leute gesehen, die package.jsonconfig laden müssen. Was wird empfohlen package.jsonoder eine RC-Datei?
  • Wie unterscheidet es sich von einer Javascript-Datei wie gulpfile.jsbei module.exports? (Ich meinte im Sinne von Empfehlungen, natürlich kenne ich den Unterschied und die Vorteile der js- und rc-Dateien)

Jedes Mal, wenn ich in Google suche, lande ich hier und hier. Dies ist ein Tool zum Lesen von RC-Dateien, erklärt aber nicht, was sie sind oder wie sie aufgebaut und / oder mit dem Modul verbunden sind.

Jeder Einblick wäre wirklich nützlich. Vielen Dank

Gopikrishna S.
quelle
Diese Dateien haben nichts Besonderes, verschiedene Module "passieren einfach", um eine ähnliche Strategie zu verwenden.
Felix Kling
In Verbindung stehender Beitrag - Was bedeutet "rc" in .bashrcusw.?
RBT

Antworten:

54

Also erstmal nett gefragt.

rcPunktdateien sind Konfigurationsdateien, deren Verwendung, Formatierung und Gesamtbedeutung variieren können. Sie können .[whatever name you like]rcDateien erstellen , um zu informieren, welches Paket Sie gerade erstellen (vorausgesetzt, ein anderes Paket sucht nicht nach demselben). Normalerweise sind sie für eine Art Tool nützlich, das auf Ihren Quellcode einwirkt und eine für Ihr Projekt spezifische Optimierung erfordert. Meines Wissens nach gab es ähnliche Dateien, die in den vergangenen Jahren eine wichtige Rolle in UNIX-Systemen gespielt haben, und die Idee ist geblieben.

Zusamenfassend:

  • Sie sind nicht knotenspezifisch.
  • Sie sind nur eine andere Datei
  • In Bezug auf Formate können sie fast alles sein - es hängt nur davon ab, was Sie zum Parsen und Lesen verwenden. YAML, JSON und ini sind wahrscheinlich die häufigsten (zumindest die, die ich gesehen habe).
  • In den meisten Fällen scheinen sie der Konvention zu folgen .[program or binary name]rc
  • package.jsonDateien können externe Metadaten enthalten, die für die Konfiguration geeignet sind. Es hängt nur davon ab, ob Ihr Projekt eine .rcDatei erwartet oder erwartet package.json(oder beides, wie im Fall von babel).

Siehe auch:

Als unglaublich einfaches Beispiel:

Angenommen, Sie möchten diese .foorcDatei mit JSON-Codierung lesen :

{
  "cool": true
}

Sie könnten so etwas tun:

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

Es gibt weitaus bessere Möglichkeiten, dies zu tun, aber Sie können ganz einfach entweder Ihr eigenes schreiben oder ein Paket finden, das das Parsen von YAML, INI usw. unterstützt und auch einige andere nette Teile einer API bereitstellt (z. B. rc ).

markthethomas
quelle
Das Paket würde also wie jede andere Datei darauf zugreifen, oder? require('./.modulerc')?
Gopikrishna S
Kommt darauf an, was du mit "Paket" meinst, aber ja. Ich werde mit einfachem Beispiel aktualisieren
markthethomas
17

Es ist nicht spezifisch für Node oder Babel, aber *rcDateien sind im Allgemeinen Konfigurationsdateien in Unix-Systemen

Aus Wikipedia

Konfigurationsdateien ändern nicht nur Einstellungen, sondern führen beim Start häufig (in Form einer "RC-Datei" ) eine Reihe von Befehlen aus (z. B. kann die "RC-Datei" für eine Shell die Shell anweisen, Verzeichnisse zu ändern. Führen Sie bestimmte Programme aus, löschen oder erstellen Sie Dateien - viele Dinge, bei denen keine Variablen in der Shell selbst geändert werden müssen und die sich nicht in den Punktedateien der Shell befanden. Diese Konvention wurde aus "Runcom-Dateien" des CTSS-Betriebssystems ausgeliehen.

Diese Funktionalität kann und wurde für Programme erweitert, die in interpretierten Sprachen geschrieben wurden, sodass die Konfigurationsdatei tatsächlich ein anderes Programm ist , das das ursprüngliche Programm neu schreibt oder erweitert oder anpasst . Emacs ist das bekannteste Beispiel dafür.

Die Namenskonvention "rc" für "rc-Dateien" wurde von der oben erwähnten "runcom" -Funktion inspiriert und steht nicht für "Ressourcenkonfiguration" , "Laufzeitkonfiguration" oder "Fernbedienung", wie oft fälschlicherweise vermutet wird.

"rc" -Dateien sind traditionell Dateien, die mit dem Suffix "(.) rc" enden und Daten und Informationen enthalten, die als Konfigurationsinformationen für das zugehörige Programm verwendet werden. Normalerweise ist der Name dieses Programms der erste Teil des Namens der RC-Datei, wobei das Suffix "(.) RC" verwendet wird, um den Zweck der Datei anzugeben, z. B. ".xinitrc" , ".vimrc" , ".bashrc" , " xsane.rc " .

Und Runcom

Unix: Aus Runcom-Dateien auf dem CTSS-System 1962-63 über das Startskript / etc / rc

Skriptdatei mit Startanweisungen für ein Anwendungsprogramm (oder ein gesamtes Betriebssystem) , normalerweise eine Textdatei mit Befehlen der Art, die nach dem Ausführen des Systems möglicherweise manuell aufgerufen wurden, aber bei jedem Systemstart automatisch ausgeführt werden müssen. Siehe auch Punktdatei.

Mit anderen Worten, "rc" ist nur etwas, das in den sechziger Jahren zurückgeblieben ist und seitdem ziemlich oft für Konfigurationsdateien in verschiedenen Arten von Programmen verwendet wurde, einschließlich Node, Babel und vielen, vielen anderen.

"RC" -Dateien haben nichts Besonderes , und sie können praktisch jede Art von Daten enthalten, es gibt keine Spezifikation oder andere Einschränkungen.

Adeneo
quelle
Hmm .. also hängt alles vom Leser ab, um zu entscheiden, was zu tun ist, oder? Gibt es eine empfohlene Art des Zugriffs darauf?
Gopikrishna S
@GopikrishnaS - Da eine "* rc" -Datei fast alles sein kann, Javascript, JSON, Klartext, XML, YAML oder was auch immer, hängt die Art und Weise, wie Sie die Datei analysieren, vollständig davon ab, was sie enthält.
Adeneo
6

RC bezieht sich auf

  • Befehle ausführen
  • Laufzeitkonfiguration

https://en.wikipedia.org/wiki/Run_commands

Das Suffix 'rc' geht auf Unix 'Großeltern CTSS zurück. Es hatte eine Befehlsskript-Funktion namens "runcom". Frühe Unixe verwendeten 'rc' als Namen für das Boot-Skript des Betriebssystems als Hommage an CTSS runcom.

rselvaganesh
quelle
Es gibt keine Verweise auf "RC", "Runcom" oder "CTSS" in en.wikipedia.org/wiki/Run_command
wyu
@wyu Sie beziehen sich auf falsche URL. Run_commandstatt Run_commands. @rselvagenesh gegeben korrekte URL.
Bala
@bala Die URL in der Antwort wurde nach meinem Kommentar bearbeitet
wyu
@ Wyu ok verstanden.
Bala