Co to są pliki `rc` w nodejs?

83

Mam kilka pytań dotyczących różnych rcplików w typowym zastosowaniu węzła, jak .npmrc, .babelrcetc.

  • Co to jest plik rc, wiem, że to plik konfiguracyjny dla modułu, ale cokolwiek innego?
  • Czy plik rc musi być zgodny z .[module]rckonwencją nazewnictwa, czy jest to tylko zalecany format?
  • Jakie formaty są obsługiwane? Widziałem zarówno formaty yaml, jak i json, czy to zależy od czytnika, którego używa moduł?
  • Jak uzyskać dostęp do pliku rc z perspektywy modułu? Czy nazwanie go tak [module]rc, aby było automatycznie dostępne dla modułu? Jeśli tak, gdzie będzie dostępna?
  • A może moduł powinien uzyskiwać dostęp do pliku tak samo, jak każdy inny plik z aplikacji, która korzysta z modułu i oczekiwać, że będzie miał zrozumiały format? (To właśnie robię teraz z formatem json)
  • Widziałem również osoby wymagające package.jsonzaładowania config. Co jest zalecane, package.jsonczy plik rc?
  • Czym różni się on od pliku javascript, takiego jak gulpfile.jsz module.exports? (Miałem na myśli w sensie zaleceń, oczywiście znam różnicę i zalety plików js i rc)

Za każdym razem, gdy wyszukuję w Google, kończę tutaj i tutaj , co jest narzędziem do odczytu pliku rc, ale nie wyjaśnia, czym one są ani jak są zbudowane i / lub połączone z modułem.

Każdy wgląd byłby naprawdę przydatny. Dzięki

Gopikrishna S
źródło
Nie ma nic specjalnego w tych plikach, różne moduły „po prostu się zdarzają”, aby zastosować podobną strategię.
Felix Kling

Odpowiedzi:

56

Więc po pierwsze, ładnie zapytany.

rcdotfiles to pliki konfiguracyjne, których użycie, formatowanie i ogólne znaczenie mogą się różnić. Możesz tworzyć .[whatever name you like]rcpliki informujące o każdym pakiecie, który tworzysz (pod warunkiem, że inny pakiet nie szuka tego samego). Zwykle są przydatne w przypadku jakiegoś narzędzia, które działa na twoim kodzie źródłowym i wymaga dostrojenia specyficznego dla twojego projektu. Rozumiem, że istniały podobne pliki, które odegrały ważną rolę w systemach UNIX w przeszłości i pomysł utknął.

W skrócie:

  • Nie są specyficzne dla węzła.
  • To tylko kolejny plik
  • Jeśli chodzi o formaty, mogą to być prawie wszystko - zależy to tylko od tego, czego użyjesz do ich przeanalizowania i przeczytania. YAML, JSON i ini są prawdopodobnie najbardziej powszechne (przynajmniej takie, jakie widziałem).
  • W większości przypadków wydają się przestrzegać konwencji .[program or binary name]rc
  • package.jsonpliki mogą zawierać zewnętrzne metadane odpowiednie dla konfiguracji, zależy to tylko od tego, czy twój projekt będzie oczekiwał .rcpliku lub oczekiwał go w package.json(lub obu, jak w przypadku babel)

Zobacz też:

Jako niesamowicie prosty przykład:

Załóżmy, że chcesz przeczytać ten .foorcplik, który używa kodowania JSON:

{
  "cool": true
}

Możesz 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));
})

Istnieją o wiele lepsze sposoby, aby to zrobić, ale możesz łatwo napisać własny lub znaleźć pakiet, który będzie obsługiwał parsowanie YAML, ini itp., A także zapewni kilka innych fajnych bitów API (na przykład rc )

markthethomas
źródło
Więc pakiet miałby do niego dostęp jak do każdego innego pliku, prawda? require('./.modulerc')?
Gopikrishna S
Zależy od tego, co rozumiesz przez „pakiet”, ale tak. Zaktualizuję prostym przykładem
markthethomas
17

Nie jest to specyficzne dla Node lub Babel, ale *rcpliki są zazwyczaj plikami konfiguracyjnymi w systemach Unix

Z Wikipedii

Pliki konfiguracyjne również nie tylko modyfikują ustawienia, ale często (w postaci „pliku rc” ) uruchamiają zestaw poleceń podczas uruchamiania (na przykład „plik rc” dla powłoki może instruować powłokę, aby zmieniła katalogi, uruchamiać określone programy, usuwać lub tworzyć pliki - wiele rzeczy, które nie wymagają modyfikowania zmiennych w samej powłoce i dlatego nie było ich w plikach dotfiles). Konwencja ta jest zapożyczona z „plików runcom” w systemie operacyjnym CTSS.

Funkcjonalność ta może i została rozszerzona na programy napisane w językach interpretowanych , tak że plik konfiguracyjny jest w rzeczywistości innym programem przepisującym, rozszerzającym lub dostosowującym oryginalny program ; Najbardziej znanym przykładem jest Emacs.

W „rc” nazewnictwo z „plików rc” był inspirowany przez zakład „runcom” wspomniano powyżej nie stać na „konfiguracji zasobów” , „Konfiguracja wykonawcza” lub „pilota” , jak często błędnie domyślić.

Pliki „rc” to tradycyjnie pliki, które kończą się przyrostkiem „(.) rc” i które zawierają dane i informacje używane jako informacje konfiguracyjne dla skojarzonego programu. Zwykle nazwa tego programu jest pierwszą częścią nazwy pliku rc, z przyrostkiem „(.) Rc” używanym do wskazania przeznaczenia 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 programu aplikacji (lub całego systemu operacyjnego) , zazwyczaj plik tekstowy zawierający polecenia, które mogły zostać wywołane ręcznie po uruchomieniu systemu, ale mają być wykonywane automatycznie przy każdym uruchomieniu systemu. Zobacz także plik dot.

Innymi słowy, „rc” to po prostu coś, co utknęło w latach sześćdziesiątych i było od tego czasu używane dość często do plików konfiguracyjnych w różnych rodzajach programów, w tym w Node, Babel i wielu, wielu innych.

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

adeneo
źródło
Hmm… więc wszystko zależy od czytelnika, który zdecyduje, co robić, prawda? Jakikolwiek zalecany sposób uzyskania do niego dostępu?
Gopikrishna S
@GopikrishnaS - Ponieważ plik "* rc" może być prawie wszystkim, javascript, JSON, zwykły tekst, XML, YAML lub cokolwiek innego, sposób parsowania pliku zależy całkowicie od tego, co zawiera.
adeneo
6

RC odnosi się do

  • uruchom polecenia
  • konfiguracja w czasie wykonywania

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

Sufiks „rc” pochodzi od poprzedniej strony Uniksa, CTSS. Miał funkcję skryptu poleceń o nazwie „runcom”. Wczesne Uniksy używały „rc” jako nazwy skryptu startowego systemu operacyjnego, jako hołd dla CTSS runcom.

rselvaganesh
źródło
nie ma odniesień do „RC”, „runcom” lub „CTSS” w en.wikipedia.org/wiki/Run_command
wyu
@wyu odsyłasz zły adres URL. Run_commandzamiast Run_commands. @rselvagenesh podano poprawny adres URL.
Bala
@bala Adres URL w odpowiedzi został zmieniony po moim komentarzu
wyu
@wyu ok, rozumiem.
Bala,