Apa arti direktori / dist dalam proyek open source?

159

Sejak saya pertama kali melihat dist/direktori di banyak proyek open source, biasanya di GitHub, saya bertanya-tanya apa artinya.

Dengan dist, vendor, lib, src, dan banyak nama folder lain yang kita lihat cukup sering, kadang-kadang saya bertanya-tanya bagaimana saya harus nama folder saya sendiri.

Koreksi saya jika saya salah!

  • src: Berisi sumber . Terkadang hanya sumber murni, terkadang dengan versi yang diperkecil, bergantung pada proyek.
  • vendor: Berisi dependensi lain, seperti proyek open source lainnya.
  • lib: Pertanyaan bagus, sebenarnya sangat dekat vendor, tergantung pada proyek kita dapat melihat satu atau lainnya atau keduanya ...
  • dist: Dari apa yang saya lihat, ini berisi file "produksi", yang harus kita gunakan jika kita ingin menggunakan perpustakaan .

Mengapa open source sangat membingungkan? Bukankah mungkin melakukan sesuatu dengan lebih jelas? Setidaknya per bahasa karena beberapa bahasa menggunakan nama tertentu.

Vadorequest
sumber
3
Jawaban bagus lainnya dapat ditemukan di sini .
Skipjack

Jawaban:

272

Untuk menjawab pertanyaan Anda:

/dist berarti "dapat didistribusikan", kode / pustaka yang dikompilasi.

Struktur folder bervariasi menurut sistem build dan bahasa pemrograman. Berikut beberapa ketentuan standar:

  • src/: file "sumber" untuk membangun dan mengembangkan proyek. Di sinilah file sumber asli berada, sebelum dikompilasi menjadi lebih sedikit file ke dist/, public/atau build/.
  • dist/: "distribusi", kode / pustaka yang dikompilasi, juga bernama public/atau build/. File yang dimaksudkan untuk produksi atau penggunaan publik biasanya ada di sini.
  • assets/: konten statis seperti gambar, video, audio, font, dll.
  • lib/: ketergantungan eksternal (bila disertakan secara langsung).
  • test/: skrip pengujian proyek, tiruan, dll.
  • node_modules/: termasuk pustaka dan dependensi untuk paket JS, yang digunakan oleh Npm.
  • vendor/: termasuk pustaka dan dependensi untuk paket PHP, yang digunakan oleh Composer.
  • bin/: file yang ditambahkan ke PATH Anda saat diinstal.

Markdown / File Teks:

  • README.md: File bantuan yang membahas pengaturan, tutorial, dan mendokumentasikan proyek. README.txtjuga digunakan.
  • LICENSE.md: hak apa pun yang diberikan kepada Anda terkait proyek. LICENSEatau LICENSE.txtvariasi dari nama file lisensi, yang memiliki konten yang sama.
  • CONTRIBUTING.md: cara membantu proyek. Terkadang ini dialamatkan di README.mdfile.

Spesifik (ini bisa berlangsung selamanya):

  • package.json: mendefinisikan pustaka dan dependensi untuk paket JS, yang digunakan oleh Npm.
  • package-lock.json: kunci versi khusus untuk dependensi yang diinstal dari package.json, digunakan oleh Npm.
  • composer.json: mendefinisikan pustaka dan dependensi untuk paket PHP, yang digunakan oleh Composer.
  • composer.lock: kunci versi khusus untuk dependensi yang diinstal dari composer.json, digunakan oleh Composer.
  • gulpfile.js: digunakan untuk menentukan fungsi dan tugas yang akan dijalankan dengan Gulp.
  • .travis.yml: file config untuk lingkungan Travis CI .
  • .gitignore: Spesifikasi file yang dimaksudkan untuk diabaikan oleh Git.
0xcaff
sumber
35
Bagaimana dengan artinya dist?
Vadorequest
23
distribusi, biasanya berisi perangkat lunak yang dikompilasi.
0xcaff
2
Bagaimana dengan assets/foldernya? Apa yang seharusnya mengandung?
Sekhemty
2
@Sekhemty, konten statis seperti gambar, video, audio, font, dll.
Quaker
& publik dimaksudkan untuk? app.use (express.static (__ dirname + '/ public')); ?? app.use (express.static (__ dirname + '/ dist')); bukan ide yang bagus
LOG_TAG
58

Untuk menjawab pertanyaan awal Anda tentang arti distfolder:

Bentuk singkatnya distadalah distributabledan mengacu pada direktori tempat file akan disimpan yang dapat langsung digunakan oleh orang lain tanpa perlu mengkompilasi atau mengecilkan kode sumber yang sedang digunakan kembali.

Contoh: Jika saya ingin menggunakan kode sumber pustaka Java yang ditulis seseorang, maka Anda perlu mengkompilasi sumber terlebih dahulu untuk memanfaatkannya. Tetapi jika seorang penulis perpustakaan telah menempatkan versi yang telah dikompilasi ke dalam repositori, maka Anda dapat melanjutkan. Versi yang sudah dikompilasi tersebut disimpan ke dalam distdirektori.

Hal serupa berlaku untuk modul JavaScript. Biasanya kode JavaScript diminimalkan dan disamarkan untuk digunakan dalam produksi. Oleh karena itu, jika Anda ingin mendistribusikan pustaka JavaScript, disarankan untuk meletakkan kode sumber biasa (bukan yang diperkecil) ke dalam srcdirektori (sumber) dan versi yang diperkecil dan dikaburkan ke dalam direktori dist(dapat didistribusikan), sehingga orang lain dapat mengambil versi yang diperkecil dengan benar. pergi tanpa harus mengecilkannya sendiri.

Catatan: Beberapa pengembang menggunakan nama seperti target, buildatau dest(tujuan) sebagai ganti dist. Tetapi tujuan folder-folder ini identik.

Benny Neugebauer
sumber
11
Saya pikir ini menjawab pertanyaan terbaik. dist berarti dapat didistribusikan, bukan distribusi. Ini adalah direktori yang setelah semuanya telah dikompilasi, ditelan, ditranspilasi, dikumpulkan dan diproduksi dari semua sumber dan file lain dan pernak-pernik dll. Inilah yang ingin Anda distribusikan atau tunjukkan kepada orang lain bahwa itu dapat didistribusikan!
Eric Bishard
4

Ringkasan folder:

  • bin: binari
  • src: sumber
  • termasuk: header C / C ++
  • lib: pustaka C / C ++
  • kontrib: kontribusi dari orang lain
  • doc / docs: dokumentasi
  • pria: manual (Unix / Linux)
Nikmatilah Liu
sumber
2

Sebenarnya! "folder dist" adalah hasil yang Anda dapatkan setelah memodifikasi kode sumber dengan "npm run build" atau "ng build" atau "ng build --prod" untuk produksi.

Sementara itu! Setelah mendapatkan "folder dist", mungkin masih ada beberapa hal yang perlu Anda lakukan bergantung pada jenis proyek Anda ✌️

Oyeleye Oluwasegun
sumber