Quelle est la signification du répertoire / dist dans les projets open source?


148

Depuis que j'ai vu pour la première fois un dist/répertoire dans de nombreux projets open source, généralement sur GitHub, je me demande ce que cela signifie.

Avec dist, vendor, lib, src, et bien d' autres noms de dossiers que nous voyons assez souvent, je me demande parfois comment je devrais nommer mes propres dossiers.

Corrige moi si je me trompe!

  • src: contient les sources . Parfois, seules les sources pures, parfois avec la version minifiée, dépendent du projet.
  • fournisseur: contient d'autres dépendances, comme d'autres projets open source.
  • lib: Bonne question, c'est vraiment proche de vendorréellement, selon le projet on peut voir l'un ou l'autre ou les deux ...
  • dist: D'après ce que j'ai vu, il contient les fichiers "production", celui que nous devrions utiliser si nous voulons utiliser la bibliothèque .

Pourquoi l'open source est-il si déroutant? N'est-il pas possible de faire les choses plus clairement? Au moins par langue car certaines langues utilisent des noms spécifiques.


3
Une autre bonne réponse peut être trouvée ici .
Skipjack

Réponses:


253

Pour répondre à ta question:

/dist signifie «distribuable», le code / bibliothèque compilé.

La structure des dossiers varie selon le système de construction et le langage de programmation. Voici quelques conventions standards:

  • src/: fichiers "source" pour construire et développer le projet. C'est là que se trouvent les fichiers source d'origine, avant d'être compilés en moins de fichiers vers dist/, public/ou build/.
  • dist/: "distribution", le code / bibliothèque compilé, également nommé public/ou build/. Les fichiers destinés à la production ou à un usage public se trouvent généralement ici.
  • assets/: contenu statique comme les images, la vidéo, l'audio, les polices, etc.
  • lib/: dépendances externes (lorsqu'elles sont incluses directement).
  • test/: les scripts de tests du projet, les simulations, etc.
  • node_modules/: inclut les bibliothèques et les dépendances pour les packages JS, utilisés par Npm.
  • vendor/: inclut les bibliothèques et les dépendances pour les packages PHP, utilisés par Composer.
  • bin/: fichiers qui sont ajoutés à votre PATH lors de l'installation.

Markdown / Fichiers texte:

  • README.md: Un fichier d'aide qui traite de la configuration, des didacticiels et documente le projet. README.txtest également utilisé.
  • LICENSE.md: tous droits qui vous sont accordés concernant le projet. LICENSEou LICENSE.txtsont des variantes du nom du fichier de licence, ayant le même contenu.
  • CONTRIBUTING.md: comment aider avec le projet. Parfois, cela est abordé dans le README.mdfichier.

Spécifiques (ceux-ci pourraient durer éternellement):

  • package.json: définit les bibliothèques et les dépendances pour les packages JS, utilisés par Npm.
  • package-lock.json: verrou de version spécifique pour les dépendances installées à partir de package.json, utilisé par Npm.
  • composer.json: définit les bibliothèques et les dépendances pour les packages PHP, utilisés par Composer.
  • composer.lock: verrou de version spécifique pour les dépendances installées à partir de composer.json, utilisé par Composer.
  • gulpfile.js: utilisé pour définir les fonctions et les tâches à exécuter avec Gulp.
  • .travis.yml: fichier de configuration pour l' environnement Travis CI .
  • .gitignore: Spécification des fichiers destinés à être ignorés par Git.

35
Et la signification de dist?
Vadorequest le

23
distribution, il contient généralement le logiciel compilé.
0xcaff

2
Et le assets/dossier? Qu'est-ce qui est censé contenir?
Sekhemty

2
@Sekhemty, contenu statique comme des images, de la vidéo, de l'audio, des polices, etc.
Quaker

& public destiné? app.use (express.static (__ dirname + '/ public')); ?? app.use (express.static (__ dirname + '/ dist')); n'est pas une bonne idée
LOG_TAG

55

Pour répondre à votre question initiale sur la signification du distdossier:

Le raccourci distsignifie distributableet fait référence à un répertoire dans lequel les fichiers seront stockés qui peuvent être directement utilisés par d'autres sans avoir besoin de compiler ou de réduire le code source qui est réutilisé.

Exemple: si je souhaite utiliser le code source d'une bibliothèque Java écrite par quelqu'un, vous devez d'abord compiler les sources pour l'utiliser. Mais si un auteur de bibliothèque met déjà la version précompilée dans le référentiel, vous pouvez simplement continuer. Une telle version déjà compilée est enregistrée dans le distrépertoire.

Quelque chose de similaire s'applique aux modules JavaScript. Généralement, le code JavaScript est minifié et obscurci pour une utilisation en production. Par conséquent, si vous souhaitez distribuer une bibliothèque JavaScript, il est conseillé de placer le code source brut (non minifié) dans un srcrépertoire (source) et la version minifiée et obscurcie dans le distdirectoy (distribuable), afin que les autres puissent saisir la version minifiée correctement loin sans avoir à le réduire eux-mêmes.

Remarque: certains développeurs utilisent des noms tels que target, buildou dest(destination) au lieu de dist. Mais le but de ces dossiers est identique.


11
Je pense que cela répond le mieux à la question. dist signifie distribuable, pas distribution. C'est le répertoire qui une fois que tout a été compilé, avalé, transpilé, assemblé et produit à partir de toutes les autres sources et fichiers et bibelots etc. c'est ce que vous voulez distribuer ou indiquer aux autres que c'est le distribuable!
Eric Bishard

3

Résumé des dossiers:

  • bin: binaires
  • src: source
  • inclure: en-têtes C / C ++
  • lib: bibliothèques C / C ++
  • contrib: contribution d'autres personnes
  • doc / docs: documentations
  • man: manuel (Unix / Linux)

1

Réellement! "dist folder" est le résultat que vous obtenez après avoir modifié un code source avec "npm run build" ou "ng build" ou "ng build --prod" pour la production.

Pendant ce temps! Après avoir obtenu le "dossier dist", il se peut qu'il reste encore peu de choses à faire en fonction de votre type de projet ✌️

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.