ความหมายของไดเรกทอรี / dist ในโครงการโอเพ่นซอร์สคืออะไร?


148

ตั้งแต่แรกที่ฉันเห็นdist/ไดเรกทอรีในโครงการโอเพ่นซอร์สหลายแห่งโดยปกติจะอยู่ที่ GitHub ฉันสงสัยว่ามันหมายถึงอะไร

ด้วยdist, vendor, lib, srcและอีกหลายชื่อโฟลเดอร์อื่น ๆ ที่เราเห็นค่อนข้างบ่อยบางครั้งผมสงสัยว่าฉันควรตั้งชื่อโฟลเดอร์ของตัวเอง

ช่วยแก้ให้ด้วยนะถ้าฉันผิด!

  • src: ประกอบด้วยแหล่งที่มา บางครั้งเฉพาะแหล่งบริสุทธิ์บางครั้งด้วยรุ่นที่ย่อเล็กสุดขึ้นอยู่กับโครงการ
  • ผู้จัดจำหน่าย: มีการอ้างอิงอื่น ๆ เช่นโครงการโอเพนซอร์สอื่น ๆ
  • lib: คำถามที่ดีมันใกล้เคียงกับvendorจริง ๆ ขึ้นอยู่กับโครงการที่เราสามารถเห็นอย่างใดอย่างหนึ่งหรือทั้งสอง ...
  • อ.: จากสิ่งที่ฉันเห็นมันมี "การผลิต" ไฟล์หนึ่งที่เราควรจะใช้ถ้าเราต้องการที่จะใช้ห้องสมุด

ทำไมโอเพนซอร์สจึงสับสน? เป็นไปไม่ได้ไหมที่จะทำสิ่งต่าง ๆ ที่ชัดเจน? อย่างน้อยต่อภาษาเพราะบางภาษาใช้ชื่อเฉพาะ


3
คำตอบที่ดีอีกอย่างหนึ่งที่สามารถพบได้ที่นี่
Skipjack

คำตอบ:


252

ในการตอบคำถามของคุณ:

/dist หมายถึง "แบบแจกจ่ายได้", รหัส / ไลบรารีที่คอมไพล์แล้ว

โครงสร้างโฟลเดอร์แตกต่างกันไปตามการสร้างระบบและภาษาการเขียนโปรแกรม นี่คือการประชุมมาตรฐานบางส่วน:

  • src/: ไฟล์ "source" เพื่อสร้างและพัฒนาโครงการ นี่คือที่ไฟล์ต้นฉบับจะอยู่ก่อนที่จะถูกรวบรวมเป็นไฟล์น้อยลงdist/, หรือpublic/build/
  • dist/"กระจาย" ที่รวบรวมรหัส / ห้องสมุดยังเป็นชื่อหรือpublic/ build/ไฟล์ที่มีไว้สำหรับใช้ในการผลิตหรือสาธารณะมักจะอยู่ที่นี่
  • assets/: เนื้อหาแบบสแตติกเช่นรูปภาพวิดีโอเสียงแบบอักษร ฯลฯ
  • lib/: การพึ่งพาภายนอก (เมื่อรวมโดยตรง)
  • test/: สคริปต์ทดสอบของโครงการ, mocks และอื่น ๆ
  • node_modules/: รวมไลบรารีและการขึ้นต่อกันของแพ็กเกจ JS ซึ่งใช้โดย Npm
  • vendor/: รวมไลบรารี่และการขึ้นต่อกันของแพ็คเกจ PHP ที่ Composer ใช้
  • bin/: ไฟล์ที่เพิ่มลงใน PATH ของคุณเมื่อติดตั้ง

Markdown / ไฟล์ข้อความ:

  • README.md: ไฟล์ช่วยเหลือที่ระบุถึงการตั้งค่าบทแนะนำและเอกสารโครงการ README.txtยังใช้
  • LICENSE.md: สิทธิ์ใด ๆ ที่มอบให้คุณเกี่ยวกับโครงการ LICENSEหรือLICENSE.txtรูปแบบของชื่อไฟล์ใบอนุญาตมีเนื้อหาเดียวกัน
  • CONTRIBUTING.md: วิธีการช่วยเหลือโครงการ บางครั้งสิ่งนี้ถูกแก้ไขในREADME.mdไฟล์

เฉพาะ (สิ่งเหล่านี้สามารถดำเนินต่อไปได้ตลอดไป):

  • package.json: กำหนดไลบรารีและการพึ่งพาสำหรับแพ็กเกจ JS ใช้โดย Npm
  • package-lock.json: ล็อคเฉพาะรุ่นสำหรับการติดตั้งอ้างอิงที่package.jsonใช้โดย Npm
  • composer.json: กำหนดไลบรารีและการพึ่งพาสำหรับแพ็คเกจ PHP ที่ใช้โดย Composer
  • composer.lock: ล็อคเฉพาะรุ่นสำหรับการติดตั้งอ้างอิงที่composer.jsonใช้โดย Composer
  • gulpfile.js: ใช้เพื่อกำหนดฟังก์ชั่นและงานที่จะทำงานด้วย Gulp
  • .travis.yml: ไฟล์กำหนดค่าสำหรับสภาพแวดล้อมTravis CI
  • .gitignore: ข้อมูลจำเพาะของไฟล์ที่ Git ต้องการให้ละเว้น

35
แล้วความหมายของdistอะไรล่ะ?
Vadorequest

23
การกระจายมักจะมีซอฟต์แวร์ที่รวบรวม
0xcaff

2
แล้วassets/โฟลเดอร์ล่ะ? สิ่งที่ควรจะมี?
Sekhemty

2
@Sekhemty เนื้อหาแบบคงที่เช่นรูปภาพวิดีโอเสียงฟอนต์และอื่น ๆ อีกมากมาย
Quaker

& สาธารณะมีวัตถุประสงค์เพื่อ? app.use (express.static (__ dirname + '/ public')); ?? app.use (express.static (__ dirname + '/ dist')); ไม่ใช่ความคิดที่ดี
LOG_TAG

55

หากต้องการตอบคำถามเดิมของคุณเกี่ยวกับความหมายของdistโฟลเดอร์:

ย่อdistมาจากdistributableและหมายถึงไดเรกทอรีที่ไฟล์จะถูกเก็บไว้ที่สามารถนำมาใช้โดยตรงโดยผู้อื่นโดยไม่จำเป็นต้องรวบรวมหรือลดขนาดซอร์สโค้ดที่จะถูกนำมาใช้ใหม่

ตัวอย่าง:หากฉันต้องการใช้ซอร์สโค้ดของไลบรารี Java ที่มีคนเขียนไว้คุณต้องรวบรวมซอร์สก่อนเพื่อใช้ประโยชน์ แต่ถ้าผู้เขียนไลบรารี่วางเวอร์ชันที่คอมไพล์แล้วลงในที่เก็บคุณก็สามารถไปข้างหน้าได้ เวอร์ชันที่คอมไพล์แล้วจะถูกบันทึกลงในdistไดเรกทอรี

สิ่งที่คล้ายกันนำไปใช้กับโมดูล JavaScript โดยปกติแล้วโค้ด JavaScript จะถูกย่อขนาดและทำให้สับสนเพื่อใช้ในการผลิต ดังนั้นถ้าคุณต้องการกระจายไลบรารี JavaScript ขอแนะนำให้ใส่ซอร์สโค้ดแบบธรรมดา (ไม่ย่อเล็กsrc) ลงในไดเรกทอรี (ซอร์ส) และเวอร์ชันที่distย่อเล็กลงและ obfuscated ลงในdirectoy (แจกจ่ายได้) เพื่อให้ผู้อื่นสามารถคว้าเวอร์ชันย่อที่ถูกต้อง ออกไปโดยไม่ต้องย่อมันเอง

หมายเหตุ:นักพัฒนาบางคนใช้ชื่อเหมือนtarget, buildหรือdest(ปลายทาง) distแทน แต่วัตถุประสงค์ของโฟลเดอร์เหล่านี้เหมือนกัน


11
ฉันคิดว่านี่เป็นคำตอบที่ดีที่สุด dist หมายถึงการแจกจ่ายได้ไม่ใช่การแจกแจง มันเป็นไดเรกทอรีที่เมื่อทุกอย่างถูกคอมไพล์ gulped, transpiled, ประกอบและผลิตจากแหล่งอื่น ๆ และไฟล์และเครื่องประดับเป็นต้นนี่คือสิ่งที่คุณต้องการแจกจ่ายหรือบ่งบอกผู้อื่นว่ามันสามารถแจกจ่ายได้!
Eric Bishard

3

บทสรุปของโฟลเดอร์:

  • bin: ไบนารี
  • src: แหล่งที่มา
  • รวม: ส่วนหัว C / C ++
  • lib: ไลบรารี C / C ++
  • contrib: การสนับสนุนจากคนอื่น
  • doc / docs: เอกสาร
  • ชาย: คู่มือ (Unix / Linux)

1

ที่จริง! "dist folder" เป็นผลลัพธ์ที่คุณได้รับหลังจากแก้ไขซอร์สโค้ดด้วย "npm run build" หรือ "ng build" หรือ "ng build --prod" สำหรับการผลิต

ในขณะเดียวกัน! หลังจากได้รับ "dist folder" อาจยังมีบางสิ่งที่คุณยังต้องทำโดยขึ้นอยู่กับประเภทโครงการของคุณ✌️

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.