Czym są pliki ' rc ' w nodejs?

Mam kilka pytań dotyczących różnych plików rc w typowej aplikacji node, jak .npmrc, .babelrc itd.

  • co to jest plik rc, wiem, że jest to runtime-config dla modułu, ale coś jeszcze?
  • czy plik rc musi być zgodny z konwencją nazewnictwa .[module]rc czy jest tylko zalecanym formatem?
  • jakie są obsługiwane formaty? Widziałem zarówno formaty yaml, jak i json, czy zależy to od czytnika, którego używa moduł?
  • Jak uzyskać dostęp do pliku rc z perspektywa modułu? Czy nazwanie go jako [module]rc automatycznie udostępni modułowi? Jeśli tak, gdzie będzie on dostępny?
  • a może moduł powinien uzyskać dostęp do pliku tak jak każdy inny plik z aplikacji, która korzysta z modułu i oczekiwać, że będzie w zrozumiałym formacie? (To właśnie robię teraz, z formatem json)
  • widziałem również ludzi wymagających package.json do załadowania config. Który jest zalecany, package.json czy plik rc?
  • również czym się różni z pliku javascript jak gulpfile.js z module.exports? (Miałem na myśli zalecenia, oczywiście znam różnicę i zalety plików js i rc) {]}

Za każdym razem, gdy szukam w google, kończę tutaj i tutaj , które jest narzędziem do odczytu pliku rc, ale nie wyjaśnia, czym są lub jak są zbudowane i / lub podłączone do modułu.

Każdy wgląd byłby naprawdę przydatny. Dzięki
Author: Gopikrishna S, 2016-03-25

3 answers

Więc po pierwsze, ładnie poproszony.

rc pliki dotfiles są plikami konfiguracyjnymi, które mogą się różnić w ich użyciu, formatowaniu i ogólnym znaczeniu. Możesz tworzyć pliki .[whatever name you like]rc, aby informować o tym, jaki pakiet tworzysz (pod warunkiem, że inny pakiet nie szuka tego samego). Zazwyczaj są one przydatne dla jakiegoś narzędzia, które działa na Twojego kodu źródłowego i wymaga dostrojenia specyficznego dla Twojego projektu. Rozumiem, że były podobne pliki, które odegrały ważną rola w systemach uniksowych w latach ubiegłych i pomysł utknął.

W skrócie:

  • nie są specyficzne dla node.
  • to tylko kolejny plik
  • jeśli chodzi o formaty, mogą one być prawie wszystkim - to zależy tylko od tego, czego użyjesz do ich analizy i odczytu. YAML, JSON i ini są chyba najbardziej powszechne(przynajmniej, że widziałem).
  • w większości przypadków wydają się być zgodne z konwencją .[program or binary name]rc
  • package.json pliki mogą zawierać zewnętrzne metadane odpowiedni dla config, zależy tylko od tego, czy twój projekt będzie oczekiwał pliku .rc, czy też będzie oczekiwał go w package.json (lub obu, jak w przypadku babel)

Zobacz też:

Jako niezwykle prosty przykład:

Powiedz, że chcesz to przeczytać .foorc plik wykorzystujący kodowanie JSON:

{
  "cool": true
}

Mógłbyś zrobić coś takiego:

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

Są o wiele lepsze sposoby na to, ale możesz łatwo napisać swój własny lub znaleźć pakiet, który obsługiwałby YAML, ini itp. nie jest to jednak możliwe w przypadku, gdy nie jest to możliwe.]}

 24
Author: markthethomas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:17:45

Nie jest specyficzne dla Node czy Babel, ale *rc pliki są zazwyczaj plikami konfiguracyjnymi w systemach uniksowych

Z Wikipedii

Pliki konfiguracyjne robią więcej niż tylko modyfikują ustawienia, często (w postaci "pliku rc") Uruchom zestaw poleceń po uruchomieniu (dla przykład, "plik rc" dla powłoki może nakazać jej zmianę katalogów, uruchamiać określone programy, usuwać lub tworzyć pliki-wiele rzeczy, które nie dotyczą modyfikowanie zmiennych w samej powłoce i tak nie było w Shell ' s dotfiles). Konwencja ta jest zapożyczona z "runcom files" na systemie operacyjnym CTSS.

Ta funkcjonalność może i został rozszerzony dla programów napisanych w interpretacji języki takie, że plik konfiguracyjny jest faktycznie innym programem przepisywanie lub rozszerzanie lub dostosowywanie oryginalnego programu ; Emacs jest najbardziej znany taki przykład.

konwencja nazewnictwa "rc" z "RC files" został zainspirowany przez wspomniany wyżej obiekt "runcom" i robi not stand for "konfiguracja zasobów", "konfiguracja runtime" , lub "zdalne sterowanie" jak często błędnie się domyśla.

"RC" pliki są tradycyjnie plikami, które kończą się na "(.) RC " przyrostek i które zawierają dane i informacje wykorzystywane jako Konfiguracja informacje dla powiązanych program. Typowo nazwa tego program jest pierwszą częścią nazwy pliku rc, z " (.) rc " przyrostek używany do wskazania celu pliku, np. ".xinitrc " , ".vimrc", ".bashrc", "xsane.rc " .

I Runcom

Unix: z plików runcom w systemie CTSS 1962-63, poprzez skrypt startowy / etc / rc

Plik skryptu zawierający instrukcje uruchamiania dla program aplikacji (lub całego systemu operacyjnego) , Zwykle tekst plik zawierający polecenia tego typu, które mogły zostać wywołane ręcznie po uruchomieniu systemu, ale mają być wykonane automatycznie po każdym uruchomieniu systemu. Zobacz także plik dot.

Innymi słowy, "rc" jest po prostu czymś, co utkwiło w latach sześćdziesiątych i było dość często używane do plików konfiguracyjnych w różnych rodzajach programów, w tym Node, Babel i wielu, wielu i inni

Nie ma nic specjalnego w plikach "rc" i mogą one zawierać praktycznie każdy rodzaj danych, nie ma specyfikacji ani innych ograniczeń.

 13
Author: adeneo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-25 00:55:07

RC odnosi się do

  • Uruchom polecenia
  • Konfiguracja czasu pracy

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

Przyrostek 'rc' pochodzi z rodziny Uniksa, CTSS. Posiadał funkcję skryptów poleceń o nazwie "runcom". Wczesne Unixy używały 'rc' jako nazwy systemu operacyjnego skrypt startowy, jako hołd dla CTSS runcom.

 1
Author: rselvaganesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-16 18:28:14