28

Mam kilka pytań dotyczących różnych rc plików w typowym zastosowaniu węzła, jak .npmrc, .babelrc itpCo to są pliki `rc` w nodejs?

  • Co to jest plik rc, znam jego runtime-config dla modułu, ale coś jeszcze?
  • Czy plik rc musi być zgodny z konwencją nazewniczą .[module]rc lub czy jest to zalecany format?
  • Jakie są obsługiwane formaty? Widziałem oba formaty yaml 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 jako [module]rc spowoduje automatyczne jego udostępnienie modułowi? Jeśli tak, gdzie będzie 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 on w zrozumiałym formacie? (Właśnie to robię teraz, w formacie json)
  • Widziałem także osoby wymagające package.json do załadowania konfiguracji. Który jest zalecany, package.json lub plik rc?
  • Również, w jaki sposób różni się od pliku javascript, takiego jak gulpfile.js z module.exports? (Mam na myśli w sensie zalecenia, oczywiście znam różnicę i zalety js i plików RC)

każdym razem szukam w google, ja skończyć here i here, który jest narzędziem do czytania plik rc, ale nie wyjaśnia, co to jest i jak są skonstruowane i/lub podłączone do modułu.

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

+0

Nie ma nic szczególnego w tych plikach, różne moduły "po prostu się" używają podobnej strategii. –

Odpowiedz

15

Po pierwsze, ładnie zapytałem.

rc Pliki dotfile to pliki konfiguracyjne, które mogą się różnić pod względem wykorzystania, formatowania i ogólnego znaczenia. Możesz utworzyć pliki .[whatever name you like]rc, aby poinformować, który pakiet tworzysz (pod warunkiem, że inny pakiet nie szuka tego samego). Zwykle są przydatne w przypadku jakiegoś narzędzia, które działa pod kodem źródłowym i wymaga pewnych dostosowań do projektu. Rozumiem, że w przeszłości istniały podobne pliki, które odegrały ważną rolę w systemach UNIX i idea ta utknęła w martwym punkcie.

W skrócie:

  • Oni nie są specyficzne dla węzła.
  • To tylko kolejny plik
  • Jeśli chodzi o formaty, to mogą być prawie wszystkim - zależy to tylko od tego, czego użyjesz do przeanalizowania i przeczytania. YAML, JSON i ini są prawdopodobnie najbardziej powszechne (przynajmniej to, co widziałem).
  • W większości przypadków wydają się podążać Konwencji .[program or binary name]rc
  • package.json pliki mogą zawierać zewnętrzną metadane odpowiednie dla konfiguracji, to po prostu zależy od tego, czy projekt będzie oczekiwać pliku .rc lub się go spodziewać w package.json (lub oba, jak w przypadku babel)

Zobacz także:

Jako niewiarygodnie-prosty przykład:

że chcesz odczytać ten plik .foorc który używa JSON Kodowanie:

{ 
    "cool": true 
} 

Można zrobić coś takiego:

Istnieje wiele, znacznie lepszych sposobów, aby to zrobić, ale możesz łatwo napisać własne lub znaleźć pakiet, który obsługuje YAML, ini, itp. Parsowanie i dostarczyć inne miłe elementy API (na przykład rc)

+0

Więc pakiet będzie miał do niego dostęp tak jak każdy inny plik, prawda? 'require ('./. modulerc')'? –

+0

Zależy od tego, co masz na myśli przez "pakiet", ale tak. Zaktualizuję w/prosty przykład – markthethomas

+0

Mam to, dzięki :) –

9

To nie jest specyficzny dla węzła lub Babel, ale *rc pliki są zazwyczaj pliki konfiguracyjne w systemach Unix

Od Wikipedia

pliki konfiguracyjne również zrobić więcej niż tylko zmodyfikować ustawienia, często (w forma "plik rc") uruchamia zestaw poleceń podczas uruchamiania (dla przykładu , "plik rc" dla powłoki może polecić powłoce zmienić katalogi, uruchamianie pewnych programów, usuwanie lub tworzenie plików - wiele rzeczy, które nie wymagają modyfikowania zmiennych w samej powłoce , a więc nie znajdowały się w plikach dotacyjnych powłoki). Ta konwencja jest zapożyczona z "plików runcom" w systemie operacyjnym CTSS.

Funkcjonalność puszki i został przedłużony do programów napisanych w interpretowanych języków takich, że plik konfiguracyjny jest rzeczywiście inny program przepisywania lub rozszerzenie lub dostosowanie oryginalny program; Emacs to jeden z najbardziej widocznych takich przykładów.

W „rc” nazewnictwo z „rc plików” była inspirowana przez „runcom” zakładu mowa powyżej i nie nie stoją dla „konfiguracji zasobów” „Konfiguracja wykonawcza” lub "pilot", jak to się często błędnie domyśla.

„rc” pliki są tradycyjnie pliki, które kończą się na „(). Rc” przyrostek i które zawierają dane i informacje, które są wykorzystywane jako konfiguracja informacji dla skojarzonego programu. Zazwyczaj nazwa tego programu jest pierwszą częścią nazwy pliku rc, a sufiks "(.) Rc" służy do wskazania przeznaczenia pliku, np. ".xinitrc", ".vimrc", ".bashrc", "xsane.rc".

I Runcom

Unix: od runcom plików w systemie CTSS 1962-63, za pośrednictwem skryptu startowego/etc/rc

plik skryptu zawierający instrukcje startowe dla programu aplikacji (lub cały system operacyjny), zwykle plik tekstowy zawierający polecenia sortowania, które mogły zostać wywołane ręcznie, gdy system był uruchomiony, ale ma być execu ted automatycznie przy każdym uruchomieniu systemu. Zobacz także plik dot.

Innymi słowy, „rc” jest po prostu coś, co tkwi z powrotem w latach sześćdziesiątych, i był używany dość często do plików konfiguracyjnych w różnego rodzaju programach, ponieważ w tym węźle Babel i wiele, wiele inni.

Nie ma nic szczególnego w plikach "rc" i mogą one zawierać praktycznie dowolne dane, nie ma specyfikacji ani innych ograniczeń.

+0

Hmm ... więc wszystko zależy od czytelnika, aby zdecydować, co robić, prawda? Dowolny zalecany sposób dostępu do niego? –

+0

@GopikrishnaS - Jako plik * "* rc" * może być prawie wszystko, javascript, JSON, zwykły tekst, XML, YAML lub cokolwiek, jak * analizować * plik zależy całkowicie od tego, co zawiera. – adeneo

-1

RC oznacza

  • komend
  • wykonywalna konfiguracja

Odniesienie:

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

do „rc” przyrostek wraca do dziadków UNIXów, CTSS. Miał on funkcję skryptu poleceń o nazwie "runcom". Wczesne Unixes użył "rc" do nazwy skryptu startowego systemu operacyjnego, jako hołd dla runcom CTSS.

+0

brak odnośników do "RC", "runcom" lub "CTSS" w https://en.wikipedia.org/wiki/Run_command – wyu