Thuộc tính "tệp chính" khi thực hiện bower init là gì?


106

Công dụng của tệp main thuộc tính khi bạn chạy bower init là gì? Tôi đã tìm kiếm và nhiều người nói rằng nó hiện không có mục đích.

Có đúng như vậy không? Tài liệu của Bower cũng không giải thích điều đó.


3
Có vẻ như có những người khác cũng bối rối vì điều này. Ví dụ tác giả của Chòi chơi cho hướng dẫn này: net.tutsplus.com/tutorials/tools-and-tips/...
Simon Bengtsson

Có vẻ như định nghĩa của thuộc maintính hiện đang được hỏi và đang được tranh luận trong một vấn đề mở trên repo bower github. Hãy xem ở đây để biết các định nghĩa được đề xuất hiện tại và cuộc thảo luận: github.com/bower/bower/issues/935
BenjaminGolder

Câu trả lời:


60

Theo tài liệu Bower.io

chủ yếu

Loại được đề xuất: Chuỗi hoặc Mảng chuỗi

Các tệp tác vụ chính cần thiết để sử dụng gói của bạn. Trong khi Bower không trực tiếp sử dụng các tệp này, chúng được liệt kê với các lệnh bower list --json và danh sáchbower - đường dẫn, vì vậy chúng có thể được sử dụng bởi các công cụ xây dựng.

Các tệp tiền xử lý như CoffeeScript nên được biên dịch. Không bao gồm các tệp được rút gọn. Tên tệp không được tạo phiên bản (Xấu: package.1.1.0.js; Tốt: package.js).

Tôi nghĩ nó nhiều hơn cho quản lý gói và xây dựng các công cụ như Grunt và Brunch. Ví dụ: Bootstrap's bower.jsontrông giống như:

{
  "name": "bootstrap",
  "version": "3.0.3",
  "main": [
    "./dist/css/bootstrap.css",
    "./dist/js/bootstrap.js",
    "./dist/fonts/glyphicons-halflings-regular.eot",
    "./dist/fonts/glyphicons-halflings-regular.svg",
    "./dist/fonts/glyphicons-halflings-regular.ttf",
    "./dist/fonts/glyphicons-halflings-regular.woff"
  ],
  "ignore": [
    "**/.*",
    "_config.yml",
    "CNAME",
    "composer.json",
    "CONTRIBUTING.md",
    "docs",
    "js/tests"
  ],
  "dependencies": {
    "jquery": ">= 1.9.0"
  }
}

Khi tôi xây dựng trong Brunch, nó sẽ kéo các tệp này từ bower_componentsthư mục của tôi trong publicthư mục của tôi .


"Tài liệu" gì?
0xcaff

5
Điều này không thực sự trả lời câu hỏi. Tài liệu này không làm rõ vai trò của "Điểm cuối chính trong gói của bạn". Bạn đã nêu sự liên quan của main đối với Brunch, nhưng không phải nó liên quan như thế nào đến Bower.
BenjaminGolder

Tôi nghĩ điểm tôi đang cố gắng thực hiện là các tệp chính được sử dụng trong một số công cụ xây dựng liên quan đến "đây là các tệp mà gói bower của tôi dự định phân phối." Nó vẫn còn một chút mơ hồ với mục đích thực sự của nó.
Kelly J Andrews,

Neo của liên kết tài liệu đã chết. Xem câu trả lời của @Vivian Spencer để biết thông tin cập nhật.
Timothy Gu

9

Theo Đặc tả JSON của Bower ( https://github.com/bower/spec/blob/master/json.md#main ), thuộc tính "main" được sử dụng để liệt kê các tệp chủ yếu được sử dụng trong dự án. Các tệp được liệt kê không thực sự được Bower sử dụng theo bất kỳ cách nào, chúng dường như ở đó với mục đích được sử dụng bởi các công cụ xây dựng khác.

Đây là thông số kỹ thuật chính thức:

chủ yếu


Loại được đề xuất : Stringhoặc Arraytrong sốString

Các tệp tác vụ chính cần thiết để sử dụng gói của bạn. Mặc dù Bower không trực tiếp sử dụng các tệp này nhưng chúng được liệt kê với các lệnh bower list --jsonbower list --pathsvì vậy chúng có thể được sử dụng bởi các công cụ xây dựng.

  • Các tệp tiền xử lý như CoffeeScript nên được biên dịch.
  • Không bao gồm các tệp được rút gọn.
  • Tên tệp không được tạo phiên bản (Xấu: package.1.1.0.js; Tốt: package.js).

1
Một số thư viện sẽ không hoạt động nếu không có các tệp chính được liệt kê, wiredep là ví dụ hoàn hảo.
kboom

@kboom, tôi có thể gặp sự cố được kết nối với những gì bạn đang nói: ví dụ: tệp css của pdf.js-viewer sẽ không sao chép bằng cách sử dụng tệp main-bower-, tôi có nên đặt nó vào chính bên trong bower.json không? Nếu có, tôi có thực sự phải cung cấp toàn bộ đường dẫn cho mỗi tệp không? cảm ơn!
trainoasis
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.