Ý nghĩa của thư mục / dist trong các dự án nguồn mở là gì?


147

Vì lần đầu tiên tôi thấy một dist/thư mục trong nhiều dự án nguồn mở, thường là trên GitHub, tôi đã tự hỏi ý nghĩa của nó là gì.

Với dist, vendor, lib, src, và nhiều tên thư mục khác mà chúng ta thấy khá thường xuyên, đôi khi tôi tự hỏi làm thế nào tôi nên đặt tên thư mục của riêng tôi.

Sửa lỗi cho tôi nếu tôi sai!

  • src: Chứa các nguồn . Đôi khi chỉ có các nguồn thuần túy, đôi khi với phiên bản rút gọn, phụ thuộc vào dự án.
  • nhà cung cấp: Chứa các phụ thuộc khác, giống như các dự án nguồn mở khác.
  • lib: Câu hỏi hay, thực sự rất gần vendor, tùy thuộc vào dự án mà chúng ta có thể thấy cái này hay cái khác hoặc cả hai ...
  • dist: Từ những gì tôi thấy, nó chứa các tệp "sản xuất", tệp chúng ta nên sử dụng nếu muốn sử dụng thư viện .

Tại sao nguồn mở lại khó hiểu như vậy? Không thể làm mọi thứ rõ ràng hơn? Ít nhất mỗi ngôn ngữ vì một số ngôn ngữ sử dụng tên cụ thể.


3
Một câu trả lời tốt có thể được tìm thấy ở đây .
Skipjack

Câu trả lời:


250

Để trả lời câu hỏi của bạn:

/dist có nghĩa là "phân phối", mã / thư viện được biên dịch.

Cấu trúc thư mục thay đổi theo hệ thống xây dựng và ngôn ngữ lập trình. Dưới đây là một số quy ước tiêu chuẩn:

  • src/: Tập tin "nguồn" để xây dựng và phát triển dự án. Đây là nơi đặt các tệp nguồn gốc, trước khi được biên dịch thành ít tệp hơn dist/, public/hoặc build/.
  • dist/: "phân phối", mã / thư viện đã biên dịch, cũng được đặt tên public/hoặc build/. Các tập tin dành cho sản xuất hoặc sử dụng công cộng thường được đặt ở đây.
  • assets/: nội dung tĩnh như hình ảnh, video, âm thanh, phông chữ, v.v.
  • lib/: phụ thuộc bên ngoài (khi bao gồm trực tiếp).
  • test/: các kịch bản thử nghiệm của dự án, giả, v.v.
  • node_modules/: bao gồm các thư viện và các phụ thuộc cho các gói JS, được sử dụng bởi Npm.
  • vendor/: bao gồm các thư viện và phần phụ thuộc cho các gói PHP, được Composer sử dụng.
  • bin/: tập tin được thêm vào PATH của bạn khi cài đặt.

Markdown / Tệp văn bản:

  • README.md: Một tệp trợ giúp giải quyết các thiết lập, hướng dẫn và tài liệu dự án. README.txtcũng được sử dụng.
  • LICENSE.md: bất kỳ quyền nào được trao cho bạn về dự án. LICENSEhoặc LICENSE.txtlà các biến thể của tên tệp giấy phép, có cùng nội dung.
  • CONTRIBUTING.md: làm thế nào để giúp đỡ với dự án. Đôi khi điều này được giải quyết trong README.mdtập tin.

Cụ thể (những điều này có thể đi mãi mãi):

  • package.json: định nghĩa các thư viện và các phụ thuộc cho các gói JS, được sử dụng bởi Npm.
  • package-lock.json: khóa phiên bản cụ thể cho các phụ thuộc được cài đặt từ package.json, được sử dụng bởi Npm.
  • composer.json: định nghĩa các thư viện và các phụ thuộc cho các gói PHP, được Composer sử dụng.
  • composer.lock: khóa phiên bản cụ thể cho các phụ thuộc được cài đặt từ composer.json, được sử dụng bởi Trình soạn thảo.
  • gulpfile.js: được sử dụng để xác định các chức năng và tác vụ sẽ được chạy với Gulp.
  • .travis.yml: tập tin cấu hình cho môi trường Travis CI .
  • .gitignore: Thông số kỹ thuật của các tệp có nghĩa là bị bỏ qua bởi Git.

35
Ý nghĩa của nó là distgì?
Vadorequest

23
phân phối, nó thường chứa các phần mềm biên dịch.
0xcaff

2
Còn assets/thư mục thì sao? Những gì được cho là có chứa?
Sekhemty 15/03/19

2
@Sekhemty, nội dung tĩnh như hình ảnh, video, âm thanh, phông chữ, v.v.
Quaker

& công có nghĩa là gì? app.use (express.static (__ dirname + '/ công khai')); ?? app.use (express.static (__ dirname + '/ dist')); không phải là một ý tưởng hay
LOGiah

52

Để trả lời câu hỏi ban đầu của bạn về ý nghĩa của distthư mục:

Shortform distlà viết tắt của distributablevà đề cập đến một thư mục nơi các tệp sẽ được lưu trữ có thể được người khác sử dụng trực tiếp mà không cần phải biên dịch hoặc thu nhỏ mã nguồn đang được sử dụng lại.

Ví dụ: Nếu tôi muốn sử dụng mã nguồn của thư viện Java mà ai đó đã viết, thì bạn cần phải biên dịch các nguồn trước để sử dụng nó. Nhưng nếu một tác giả thư viện đã đưa phiên bản tiền biên dịch vào kho lưu trữ, thì bạn có thể tiếp tục. Một phiên bản đã được biên dịch như vậy được lưu vào distthư mục.

Một cái gì đó tương tự áp dụng cho các mô-đun JavaScript. Thông thường mã JavaScript được thu nhỏ và bị xáo trộn để sử dụng trong sản xuất. Do đó, nếu bạn muốn phân phối thư viện JavaScript, bạn nên đặt mã nguồn đơn giản (không được rút gọn) vào thư mục src(nguồn) và phiên bản rút gọn và bị xáo trộn vào distdirectoy (có thể phân phối) để người khác có thể lấy phiên bản rút gọn ngay đi mà không cần phải tự giảm thiểu nó.

Lưu ý: Một số nhà phát triển sử dụng tên như target, buildhoặc dest(đích) thay vì dist. Nhưng mục đích của các thư mục này là giống hệt nhau.


10
Tôi nghĩ rằng điều này trả lời tốt nhất câu hỏi. dist là viết tắt của phân phối, không phân phối. Đó là thư mục mà một khi tất cả mọi thứ ha được biên dịch, gulped, transpiled, lắp ráp và sản xuất từ ​​tất cả các nguồn và tập tin và đồ trang sức khác, vv .. đây là những gì bạn muốn phân phối hoặc chỉ ra cho người khác rằng đó là bản phân phối!
Eric Bishard

3

Tóm tắt các thư mục:

  • bin: nhị phân
  • src: nguồn
  • bao gồm: tiêu đề C / C ++
  • lib: thư viện C / C ++
  • đóng góp: đóng góp từ người khác
  • doc / docs: tài liệu
  • người đàn ông: hướng dẫn sử dụng (Unix / Linux)

1

Thực ra! "Thư mục dist" là kết quả bạn nhận được sau khi sửa đổi mã nguồn bằng "npm run build" hoặc "ng build" hoặc "ng build --prod" để sản xuất.

Trong khi đó! Sau khi nhận được "thư mục dist", có thể vẫn còn một vài điều bạn vẫn cần làm tùy thuộc vào loại dự án của bạn

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.