Bower_components nên được gitignored?


157

Nó sẽ là thực hành tốt để chỉ giữ các bower.jsontập tin và gitignore toàn bộ bower_componentsthư mục?


Tôi vừa nhận thấy một cuốn sách nấu ăn chính thức của Symfony thực sự trả lời cho câu hỏi chính xác này, trích dẫn "Hiện tại, bạn có thể nên cam kết tài sản được tải xuống bởi Bower thay vì thêm thư mục vào .gitignoretệp của bạn "
Pierre de LESPINAY

Câu trả lời:


149

Các trang chính thức Bower nói:

NB Nếu bạn không cho phép một gói dự định sẽ được người khác sử dụng (ví dụ: bạn đang xây dựng một ứng dụng web), bạn phải luôn kiểm tra các gói đã cài đặt vào kiểm soát nguồn .

Hãy chắc chắn kiểm tra các liên kết trong trích dẫn, nó thảo luận về một số pro và nhược điểm. Chuyên gia chính mà nó đề cập là kiểm tra chúng để đảm bảo rằng các phụ thuộc của bạn luôn có sẵn, miễn là kho lưu trữ của bạn có sẵn. Không có vấn đề gì xảy ra với Bower, GitHub hoặc bất cứ điều gì khác sẽ cần thiết nếu không.


1
Cảm ơn bạn cho bài viết thú vị này. Vì vậy, hiện tại chúng tôi vẫn chưa có "khóa tập tin" tương đương với việc đóng băng các phiên bản.
Pierre de LESPINAY

1
@PierredeLESPINAY Chỉ dành cho cấp cao nhất. Những gì còn thiếu là tương đương với tính năng thu nhỏ npm.
Passy

3
Họ cũng nói điều này trong bài đăng trên blog của họ "Cuối cùng, việc lựa chọn có hay không đăng ký tất cả thư mục / bower_components của bạn tùy thuộc vào bạn ...".
Krishnaraj

3
Lý do đằng sau việc kiểm tra chúng là một ngày nào đó thư viện có thể biến mất khỏi internet hoặc thời gian của chúng có thể gây ra lỗi xây dựng. Là người dùng Maven / Gradle, tôi không bao giờ nghĩ đến việc kiểm tra các phụ thuộc.
Krishnaraj

7
Lời khuyên trên trang Bower chính thức để kiểm tra các gói đã cài đặt trong kiểm soát nguồn đã bị xóa trong năm 2014: github.com/bower/bower.github.io/commit/ trộm
người dùng

52

Các .gitignore tập tin trong một mới được tạo Yeoman dự án AngularJS có bower_components (và node_modules) niêm yết để được bỏ qua (nếu bạn không biết Yeoman nó là một công cụ web giàn giáo rất có uy tín đối với webapps hiện đại, vì vậy đó là đủ tốt cho tôi!):

.gitignore

node_modules
dist
.tmp
.sass-cache
bower_components

9

Có một thời gian và một nơi cho cả hai phương pháp. Đối với Yeoman, việc dựa vào bower.json là phù hợp vì đó là một công cụ trong chuỗi công cụ và cần phải sống và thở với hệ sinh thái Bower. Đối với một ứng dụng web có thể triển khai, thông thường nên thực hiện tốt các cam kết phụ thuộc và duy trì quyền kiểm soát nhiều hơn.

Đây là một bài viết tốt tôi thích mà thảo luận về điều này.


6

Nếu bạn đang sử dụng Grunt và Node với Bower, sẽ rất hợp lý khi đặt bower_components vào .gitignore của bạn bởi vì khi bạn chạy grunt phục vụ hoặc xây dựng grunt, bạn sẽ quan tâm đến các phụ thuộc cho bạn, tôi chắc chắn rằng tại sao ở Yeoman họ lại thêm nó vào .gitignore


5

Trình tạo Yeoman đã điền sẵn tệp .gitignore bằng bower_components, nhưng nó cũng chứa đầy các thư mục khác mà tôi nghĩ sẽ cần cho một ứng dụng cuối cùng (như www) vì vậy tôi đã thực hiện một số nghiên cứu.

Tôi phát hiện ra rằng www / index.html là phiên bản rút gọn của ứng dụng / index.html. Thư mục ứng dụng và nội dung của nó (bao gồm bower_components) chứa các tệp nguồn cần thiết cho thư mục đầu ra (www). Bạn cam kết các thư mục nguồn vào kiểm soát nguồn (tức là git) nhưng không tạo các tệp (tức là www). Các trình quản lý gói như bower và npm được sử dụng trong giai đoạn xây dựng / tạo và các tạo phẩm của chúng không có nghĩa là được kiểm tra trong kiểm soát nguồn.

Cuối cùng, nguồn mà bạn kiểm tra vào git là cấu hình tối thiểu cần thiết để xây dựng phần còn lại của dự án cho mục đích phát triển hoặc triển khai.


0

Sẽ tốt hơn nếu bỏ qua /bower_componentsthư mục và chỉ đăng ký bower.jsonbower-locker.bower.jsontệp nếu bạn tạo tệp khóa bằng cách sử dụng bower-locker được viết bởi Shawn Lonas .

Trước khi bower-locker được tạo ra, có một bất lợi gây ra bởi vấn đề Bower không có khả năng thu nhỏ nhưng nó có thể được giảm nhẹ bởi thư viện trên.

Chạy các lệnh sau để đạt được nó:

npm install bower-locker -g

hoặc là

yarn global add bower-locker

sau đó tạo tệp khóa dựa trên bower.jsontệp hiện có bằng cách chạy:

bower-locker lock

Các bower.jsontập tin ban đầu sẽ được đặt tên lại đểbower-locker.bower.json

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.