¿Cuál es el significado del directorio / dist en proyectos de código abierto?

148

Desde la primera vez que vi un dist/directorio en muchos proyectos de código abierto, generalmente en GitHub, me he estado preguntando qué significa.

Con dist, vendor, lib, src, y muchos otros nombres de las carpetas que vemos muy a menudo, a veces me pregunto cómo debo nombrar mis propias carpetas.

¡Corrígeme si me equivoco!

  • src: contiene las fuentes . A veces solo las fuentes puras, a veces con la versión minificada, dependen del proyecto.
  • proveedor: contiene otras dependencias, como otros proyectos de código abierto.
  • lib: Buena pregunta, está realmente cerca vendor, dependiendo del proyecto, podemos ver uno u otro o ambos ...
  • dist: Por lo que vi, contiene los archivos de "producción", el que deberíamos usar si queremos usar la biblioteca .

¿Por qué es tan confuso el código abierto? ¿No es posible hacer las cosas más claras? Al menos por idioma porque algunos idiomas usan nombres específicos.

Vadorequest
fuente
3
Otra buena respuesta se puede encontrar aquí .
Skipjack

Respuestas:

251

Para responder tu pregunta:

/dist significa "distribuible", el código compilado / biblioteca.

La estructura de carpetas varía según el sistema de compilación y el lenguaje de programación. Aquí hay algunas convenciones estándar:

  • src/: archivos "fuente" para construir y desarrollar el proyecto. Aquí es donde se encuentran los archivos de origen originales, antes de compilarse en menos archivos para dist/, public/o build/.
  • dist/: "distribución", el código / biblioteca compilado, también llamado public/o build/. Los archivos destinados a producción o uso público generalmente se encuentran aquí.
  • assets/: contenido estático como imágenes, video, audio, fuentes, etc.
  • lib/: dependencias externas (cuando se incluyen directamente).
  • test/: los guiones de prueba del proyecto, simulacros, etc.
  • node_modules/: incluye bibliotecas y dependencias para paquetes JS, utilizados por Npm.
  • vendor/: incluye bibliotecas y dependencias para paquetes PHP, utilizados por Composer.
  • bin/: archivos que se agregan a su RUTA cuando se instalan.

Markdown / archivos de texto:

  • README.md: Un archivo de ayuda que aborda la configuración, tutoriales y documentos del proyecto. README.txtTambién se utiliza.
  • LICENSE.md: cualquier derecho otorgado a usted con respecto al proyecto. LICENSEo LICENSE.txtson variaciones del nombre del archivo de licencia, que tienen el mismo contenido.
  • CONTRIBUTING.md: cómo ayudar con el proyecto. A veces esto se aborda en el README.mdarchivo.

Específico (estos podrían continuar para siempre):

  • package.json: define bibliotecas y dependencias para paquetes JS, utilizados por Npm.
  • package-lock.json: bloqueo de versión específica para dependencias instaladas desde package.json, utilizado por Npm.
  • composer.json: define bibliotecas y dependencias para paquetes PHP, utilizados por Composer.
  • composer.lock: bloqueo de versión específica para dependencias instaladas desde composer.json, utilizado por Composer.
  • gulpfile.js: se utiliza para definir funciones y tareas que se ejecutarán con Gulp.
  • .travis.yml: archivo de configuración para el entorno de Travis CI .
  • .gitignore: Especificación de los archivos destinados a ser ignorados por Git.
0xcaff
fuente
35
¿Qué pasa con el significado de dist?
Vadorequest
23
distribución, generalmente contiene el software compilado.
0xcaff
2
¿Qué hay de la assets/carpeta? ¿Qué se supone que contiene?
Sekhemty
2
@Sekhemty, contenido estático como imágenes, video, audio, fuentes, etc.
Quaker,
y público destinado a? app.use (express.static (__ dirname + '/ public')); ?? app.use (express.static (__ dirname + '/ dist')); no es una buena idea
LOG_TAG
54

Para responder a su pregunta original sobre el significado de la distcarpeta:

La abreviatura distsignifica distributabley se refiere a un directorio donde se almacenarán los archivos que pueden ser utilizados directamente por otros sin la necesidad de compilar o minimizar el código fuente que se está reutilizando.

Ejemplo: si quiero usar el código fuente de una biblioteca Java que alguien escribió, entonces primero necesitas compilar las fuentes para usarlo. Pero si el autor de una biblioteca ya coloca la versión precompilada en el repositorio, puede continuar. Dicha versión ya compilada se guarda en el distdirectorio.

Algo similar se aplica a los módulos de JavaScript. Por lo general, el código JavaScript se minimiza y se ofusca para su uso en producción. Por lo tanto, si desea distribuir una biblioteca de JavaScript, es aconsejable colocar el código fuente simple (no minificado) en un srcdirectorio (fuente) y la versión minificada y ofuscada en el directorio dist(distribuible), para que otros puedan obtener la versión minificada correctamente lejos sin tener que minificarlo ellos mismos.

Nota: Algunos desarrolladores usan nombres como target, buildo dest(destino) en lugar de dist. Pero el propósito de estas carpetas es idéntico.

Benny Neugebauer
fuente
11
Creo que esto responde mejor a la pregunta. dist significa distribuible, no distribución. Es el directorio que una vez que todo ha sido compilado, engullido, transpilado, ensamblado y producido a partir de todas las demás fuentes, archivos y baratijas, etc. ¡Esto es lo que desea distribuir o indicar a otros que es el distribuible!
Eric Bishard
3

Resumen de las carpetas:

  • bin: binarios
  • src: fuente
  • incluyen: encabezados C / C ++
  • lib: bibliotecas C / C ++
  • contrib: contribución de otras personas
  • doc / docs: documentaciones
  • hombre: manual (Unix / Linux)
Travor Liu
fuente
1

¡Realmente! "dist folder" es el resultado que obtienes después de modificar un código fuente con "npm run build" o "ng build" o "ng build --prod" para producción.

¡Mientras tanto! Después de obtener la "carpeta dist", es posible que aún haya algunas cosas que deba hacer según el tipo de proyecto ✌️

Oyeleye Oluwasegun
fuente