28

Tôi có một số câu hỏi liên quan khác nhau rc tập tin trong một ứng dụng nút điển hình, như .npmrc, .babelrc, vvCác tệp `rc` trong nodejs là gì?

  • được một file rc, tôi biết gì của nó một thời gian chạy-config cho các mô-đun, nhưng bất cứ điều gì khác?
  • Tệp rc có tuân theo quy tắc đặt tên .[module]rc hoặc chỉ là định dạng được đề xuất không?
  • Các định dạng được hỗ trợ là gì? Tôi đã thấy cả hai định dạng yaml và json, nó có phụ thuộc vào người đọc mà module sử dụng không?
  • Cách truy cập tệp rc từ góc độ của mô-đun? Việc đặt tên nó là [module]rc sẽ làm cho nó tự động có sẵn cho mô-đun? Nếu vậy nó sẽ có sẵn ở đâu?
  • Hoặc mô-đun có nên truy cập tệp giống như bất kỳ tệp nào khác từ ứng dụng đang sử dụng mô-đun và mong muốn nó ở định dạng dễ hiểu không? (Đây là những gì tôi đang làm ngay bây giờ, với định dạng json)
  • Tôi cũng đã thấy những người yêu cầu package.json để tải cấu hình. Được khuyến nghị, package.json hoặc một tệp rc?
  • Ngoài ra nó khác với tệp javascript như gulpfile.js với module.exports như thế nào? (Tôi có nghĩa là theo nghĩa các khuyến nghị, tất nhiên tôi biết sự khác biệt và lợi thế của js và các file rc)

Mỗi lần tôi tìm kiếm trong google, tôi kết thúc herehere, mà là một công cụ để đọc tập tin rc nhưng không giải thích chúng là gì hoặc chúng được xây dựng như thế nào và/hoặc được kết nối với mô-đun.

Bất kỳ thông tin chi tiết nào sẽ thực sự hữu ích. Cảm ơn

+0

Không có gì đặc biệt về những tệp này, các mô-đun khác nhau "chỉ xảy ra" để sử dụng một chiến lược tương tự. –

Trả lời

15

Vì vậy, trước hết, được yêu cầu độc đáo.

rc dotfiles là các tệp cấu hình có thể thay đổi về cách sử dụng, định dạng và ý nghĩa tổng thể của chúng. Bạn có thể tạo các tệp .[whatever name you like]rc để thông báo cho bất kỳ gói nào bạn đang tạo ra (miễn là gói khác không tìm kiếm cùng một gói). Thông thường, chúng hữu ích cho một số loại công cụ hoạt động trên mã nguồn của bạn và cần một số điều chỉnh cụ thể cho dự án của bạn. Sự hiểu biết của tôi là có những tệp tương tự đóng một vai trò quan trọng trong các hệ thống UNIX trong những năm qua và ý tưởng đã bị mắc kẹt.

Nói tóm lại:

  • Họ không cụ thể cho nút.
  • Chúng chỉ là một tệp khác
  • Theo như định dạng, chúng có thể gần như mọi thứ - nó chỉ phụ thuộc vào những gì bạn sẽ sử dụng để phân tích và đọc chúng. YAML, JSON và ini có lẽ là phổ biến nhất (ít nhất là tôi đã thấy).
  • Trong hầu hết các trường hợp họ có vẻ làm theo quy ước .[program or binary name]rc
  • package.json tập tin có thể chứa siêu dữ liệu bên ngoài phù hợp với cấu hình, nó chỉ phụ thuộc vào việc hay không dự án của bạn sẽ mong đợi một tập tin .rc hoặc mong đợi nó ở package.json (hoặc cả hai, như trong trường hợp của babel)

Xem thêm:

Như một ví dụ cực kỳ đơn giản:

Giả sử bạn muốn đọc .foorc tập tin này có sử dụng JSON mã hóa:

{ 
    "cool": true 
} 

Bạn có thể làm một cái gì đó như thế này:

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

Có nhiều cách để thực hiện điều này, nhưng bạn có thể dễ dàng tự viết hoặc tìm một gói hỗ trợ YAML, ini, vv phân tích và cung cấp một số bit tốt đẹp khác của một API (ví dụ, rc))

+0

Vì vậy, gói sẽ truy cập nó giống như bất kỳ tệp nào khác đúng không? 'require ('./. modulerc')'? –

+0

Phụ thuộc vào ý bạn là "gói", nhưng có. Tôi sẽ cập nhật w/ví dụ đơn giản – markthethomas

+0

OK, cảm ơn :) –

9

Nó không cụ thể cho Node hoặc Babel, nhưng *rc file nói chung là các file cấu hình trong các hệ thống Unix

Từ Wikipedia

file cấu hình cũng làm nhiều hơn là chỉ sửa đổi cài đặt, họ thường (trong dưới dạng "tập tin rc") chạy một bộ lệnh khi khởi động (ví dụ , "tệp rc" cho vỏ có thể hướng dẫn trình bao thay đổi thư mục, chạy một số chương trình, xóa hoặc tạo tệp - nhiều thứ những thứ không liên quan đến sửa đổi biến trong chính vỏ và do đó không nằm trong dấu chấm của vỏ). Quy ước này được mượn từ "tệp runcom" trên hệ điều hành CTSS.

Chức năng này lon và đã được mở rộng cho các chương trình viết bằng giải thích ngôn ngữ như vậy mà các tập tin cấu hình thực sự là một chương trình khác viết lại hoặc gia hạn hoặc tùy biến các chương trình gốc; Emacs là ví dụ nổi bật nhất.

Các "rc" quy ước đặt tên của "file rc" được lấy cảm hứng từ "runcom" cơ sở nêu trên và không không đứng cho "cấu hình tài nguyên", "cấu hình thời gian chạy" hoặc "điều khiển từ xa" như thường bị đoán sai.

"rc" file là file mà kết thúc trong "(.) Rc" hậu tố và có chứa dữ liệu và thông tin được sử dụng như cấu hình thông tin cho chương trình liên quan đến truyền thống. Thông thường, tên chương trình là phần đầu tiên của tên tệp rc, với hậu tố "(.) Rc" được sử dụng để cho biết mục đích của tệp, ví dụ: ".xinitrc", "vimrc", ".bashrc", "xsane.rc".

Runcom

Unix: từ runcom tập tin trên hệ thống CTSS 1962-1963, thông qua kịch bản khởi động/etc/rc

tập tin Script chứa hướng dẫn khởi động cho một chương trình ứng dụng (hoặc toàn bộ hệ điều hành), thường là văn bản tệp chứa các lệnh sắp xếp có thể đã được gọi theo cách thủ công khi hệ thống đang chạy nhưng phải được thực thi ted tự động mỗi khi hệ thống khởi động. Xem thêm tệp dot.

Nói cách khác, "rc" chỉ là cái gì đó bị mắc kẹt từ phía sau trong những năm sáu mươi, và đã được sử dụng khá thường xuyên cho các tập tin cấu hình trong các loại khác nhau của các chương trình từ đó, bao gồm Node, Babel và nhiều, nhiều khác.

Không có gì đặc biệt về "rc" tệp và chúng hầu như có thể chứa bất kỳ loại dữ liệu nào, không có đặc điểm kỹ thuật hoặc các hạn chế khác.

+0

Hmm .. vì vậy tất cả phụ thuộc vào người đọc để quyết định phải làm gì, phải không? Bất kỳ cách nào được đề xuất để truy cập nó? –

+0

@GopikrishnaS - Là một tệp * "* rc" * có thể gần như mọi thứ, javascript, JSON, văn bản thuần túy, XML, YAML hoặc bất kỳ thứ gì, cách bạn * phân tích * tệp phụ thuộc hoàn toàn vào nội dung chứa. – adeneo

-1

RC đề cập đến

  • lệnh chạy
  • thời gian chạy cấu hình

lời trích dẫn:

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

Hậu tố 'rc' quay trở lại với ông bà của Unix, CTSS. Nó có một tính năng kịch bản lệnh gọi là "runcom". Đầu tiên Các UNIX đã sử dụng ‘rc’ cho tên của tập lệnh khởi động của hệ điều hành, để tưởng nhớ cho runcom CTSS.

+0

không có tham chiếu đến "RC", "runcom" hoặc "CTSS" trong https://en.wikipedia.org/wiki/Run_command – wyu