Tôi thấy đây là hai câu hỏi riêng biệt trong một. Hãy để tôi trả lời cả hai.
Bạn có nên cam kết các tập tin vào repo?
Đúng. Như đã đề cập trong câu trả lời ckuijjer của nó được khuyến khích trong Migration Guide đưa file này vào repo. Đọc để hiểu lý do tại sao bạn cần phải làm điều đó.
Là yarn.lock
gì
Nó là một tệp lưu trữ các phiên bản phụ thuộc chính xác cho dự án của bạn cùng với tổng kiểm tra cho mỗi gói. Đây là cách của sợi để cung cấp sự nhất quán cho các phụ thuộc của bạn.
Để hiểu lý do tại sao tệp này là cần thiết, trước tiên bạn cần hiểu vấn đề đằng sau NPM ban đầu là gì package.json
. Khi bạn cài đặt gói, NPM sẽ lưu trữ phạm vi sửa đổi được phép của một phụ thuộc thay vì sửa đổi cụ thể (semver). NPM sẽ cố gắng tìm nạp bản cập nhật phiên bản phụ thuộc mới nhất trong phạm vi được chỉ định (nghĩa là cập nhật bản vá không phá vỡ). Có hai vấn đề với cách tiếp cận này.
Các tác giả phụ thuộc có thể phát hành bản cập nhật phiên bản vá trong khi thực tế giới thiệu một thay đổi đột phá sẽ ảnh hưởng đến dự án của bạn.
Hai nhà phát triển chạy npm install
vào các thời điểm khác nhau có thể có được bộ phụ thuộc khác nhau. Điều này có thể gây ra lỗi không thể tái tạo trên hai môi trường giống hệt nhau. Điều này có thể gây ra vấn đề ổn định xây dựng cho các máy chủ CI chẳng hạn.
Sợi mặt khác có lộ trình dự đoán tối đa. Nó tạo yarn.lock
tập tin để lưu các phiên bản phụ thuộc chính xác . Có tập tin đó tại chỗ sợi sẽ sử dụng các phiên bản được lưu trữ yarn.lock
thay vì giải quyết các phiên bản từ package.json
. Chiến lược này đảm bảo rằng không có vấn đề nào được mô tả ở trên xảy ra.
yarn.lock
tương tự như npm-shrinkwrap.json
có thể được tạo bởi npm shrinkwrap
lệnh. Kiểm tra câu trả lời này giải thích sự khác biệt giữa hai tệp này.