Très grand nombre de fichiers générés pour chaque Angulaire du projet
Je voulais commencer un simple hello world app Angulaire.
Lorsque j'ai suivi les instructions officielles démarrage rapide l'installation créé de 32 000 fichiers dans mon projet.
J'ai pensé que c'est une erreur ou j'ai raté quelque chose, j'ai donc décidé d'utiliser angulaires-cli, mais après la mise en place du projet, j'ai compté plus de 41,000 fichiers.
Où ai-je fait de mal? Ai-je raté quelque chose de vraiment vraiment évident?
- Il est normal pour des projets alimenté par NPM.
- Pourquoi voudriez-vous même pas la peine comptage du nombre de fichiers. Si votre hello world app fonctionne, tout va bien
- parce que mon déploiement (google app engine) permet seulement 10K fichiers
- Oui, et je pense que c'est trop horrible. Mais beaucoup de ces fichiers sont nécessaires uniquement pour le débogage! Par exemple: "lite-server', un léger (ironie ici, je suppose) de serveur web.
- Quand enfermé, il ne prend que 1 fichier
- J'ai eu le même problème une fois, et le "skip_files" l'expression dans l'application.yaml. Avec cela, vous pouvez dire GAE les fichiers ou les répertoires à ne pas télécharger
- Pour quiconque est curieux de connaître le nombre de votes sur cette question et ses réponses, ce qui fait que les HN en première page. news.ycombinator.com/item?id=12209028
- le très grand nombre de fichiers que vous voyez sont des modules npm, qui vont dans le dossier node_modules. Ce dossier n'est pas destiné à être déployé ou archivé, et est destiné à être créé de façon dynamique pendant la phase de construction/déploiement à l'aide de npm install. Vous ne doit être déploiement de quelques petits fichiers et le déploiement doit ensuite restaurer le mécanisme national de prévention de paquets sur le serveur.
- sorte de tangentielle, mais pertinent, stackoverflow.com/questions/25124844/...
- Pour comparaison, j'ai un réagir/redux/routeur projet qui est d'environ 6 mois. J'ai compté
node_modules
: 101k fichiers en 761 modules. Nombre de fichiers déployés sur le serveur: 1. - Je parie que vous vous engagez .Les fichiers DS_Store à git en tant que bien.
- Êtes-vous à l'aide de Google App Engine pour un côté client web app? Si oui, pourquoi? Si vous utilisez Angulaire 2 sur le côté serveur on peut avoir un problème, mais je doute que vous êtes.
- comme la plupart des sur le web, il est probablement client et le code serveur. GAE sert des fichiers statiques, comme configuré par l'app.yaml
- Je pense que "Si votre hello world app fonctionne, tout va bien" n'est pas une bonne philosophie à suivre, surtout pour quelqu'un qui est de l'apprentissage. L'OP est exactement droit de se demander pourquoi autant de fichiers ont été créés. L'exemple lui-même les références à seulement 5 fichiers. Et honnêtement, toute application qui a plus de fichiers qu'il y a de lettres dans sa sortie doit être remis en question.
- Vous pouvez tous les faire valoir, mais j'ai juste compris ca angulaire dans mon projet et il fait 0 de nouveaux fichiers ...
- jamais entendu parler de groupage de vos sources pour quelques fichiers avant de les déployer?
- avez-vous un lien comment puis-je configurer angulaire 2 à partir de cdn?
- En fait j'ai utilisé angulaire 1 (désolé), mais il semble que cela fonctionne incorporer.plnkr.co/9Xbw3M/preview
- Pour créer et exécuter générer l'utilisation de ng build --prod il dicrease montant de fichier dans le répertoire dist et il va augmenter la vitesse angulaire du projet, il suffit de donner dist chemin d'accès au dossier, puis à haute vitesse de projet
- Je suis le seul ici qui pense que c'est juste I N S A N E. quelque Chose a terriblement mal. Je comprends que je peux créer un bundle et déployer un seul fichier. Des beaux. Mais de télécharger des milliers de fichiers à partir de GitHub... Qui a conçu ce?
- c'est drôle la façon dont vous posté la question concernant la limite de fichier, mais si vous utilisez angulaires-cli, alors vous pouvez construire l'application à l'aide ,
ng build
qui vous permet de convertir tous les type de fichiers de script et de les combiner dans moins d'un fichier. - à l'aide de fil peut alse intéressantes. voir la différence entre les fils et npm ici : https://www.sitepoint.com/yarn-vs-npm/
- J'ai également été choqué par la quantité de fichiers .... m'attendais à plus de simplicité ....
- Presque 500 MO en taille. le pire, c'est qu'il téléchargés de nouveau pour chaque dossier de projet.
- Bienvenue à NPM
Vous devez vous connecter pour publier un commentaire.
Il n'y a rien de mal avec votre configuration.
Angulaire (depuis la version 2.0) utilise des modules npm et dépendances pour le développement. C'est la seule raison pour laquelle vous assistons à un très grand nombre de fichiers.
Une configuration de base Angulaire contient transpiler, typings dépendances qui sont essentiel à des fins de développement uniquement.
Une fois que vous avez fini avec développement, tout ce que vous devez faire est de regrouper cette application.
Après le regroupement de votre demande, il n'y aura qu'un seul
bundle.js
fichier que vous pouvez ensuite déployer sur votre serveur.'transpiler' est seulement un compilateur, merci @omninonsense pour l'ajout que.
lodash
a 1021 fichiers sur la version, j'ai juste téléchargé. (Certes, c'est probablement plus que la moyenne, mais le point reste). Pour ne pas mentionner le mécanisme national de prévention de l'écosystème est conçu pour être très modulaire, de sorte que chaque dépendance a pas mal d'autres dépendances.NPM Package (Fichiers de Développement) Monde Réel des Fichiers (Déploiement)
*
:bundled with @angular
[ voir cette regroupant un ensemble de processus ⇗ ]
-3
a été donné pour ne pas en faire la somme, mais maintenant j'ai 🙂Il n'y a rien de mal avec votre développement de configuration.
Quelque chose de mal avec votre production de configuration.
Lorsque vous développez un "Angulaire 2 Projet" ou "Aucun Projet, Qui repose sur JS" vous pouvez utiliser tous les fichiers, vous pouvez essayer tous les fichiers, vous pouvez importer tous les fichiers. Mais si vous voulez vous servir de ce projet, vous devez COMBINER tous les fichiers structurés et de se débarrasser des fichiers inutiles.
Il y a beaucoup d'options pour combiner ces fichiers:
Que plusieurs personnes déjà mentionnées: Tous les fichiers dans votre répertoire node_modules (MNP emplacement pour les paquets) dans le cadre de votre projet de dépendances (appelées dépendances directes). Comme un plus, vos dépendances peuvent également avoir leurs propres dépendances et ainsi de suite etc. (Appelées dépendances transitives). Plusieurs dizaines de milliers de fichiers ne sont rien de spécial.
Parce que vous n'êtes autorisé à télécharger 10'000 fichiers (Voir les commentaires), je voudrais aller avec bundler moteur. Ce moteur permettra de regrouper toutes vos JavaScript, CSS, HTML, etc ... et créer un lot unique (ou plus si vous le préciser). Votre index.html va charger ce bundle et c'est tout.
Je suis un fan de webpack, donc mon webpack solution permettra de créer un bundle d'application et un vendeur bundle (Pour la pleine application de travail voir ici https://github.com/swaechter/project-collection/tree/master/web-angular2-example):
index.html
webpack.config.js
Avantages:
Inconvénients:
Avertissement: C'est une bonne solution pour Http 1.*, parce qu'il minimise la charge pour chaque requête Http. Vous n'avez qu'une demande de votre index.html et chaque ensemble, mais pas pour le 100 - 200 fichiers. Pour le moment, c'est le chemin à parcourir.
Http 2 sur l'autre main, tente de minimiser le Http généraux, de sorte qu'il est basé sur un protocole de flux. Ce flux est en mesure de communiquer dans les deux sens (Client <--> Serveur) et comme une raison de la plus intelligente des ressources de chargement est possible (on ne charge que les fichiers requis). Le flux élimine une grande partie de la Http généraux (Moins Http allers-retours).
Mais c'est la même qu'avec IPv6: Il faudra quelques années jusqu'à ce que les gens vont vraiment utiliser le protocole Http 2
angular-cli
qui est déjà fourni avec un système de regroupement (le même suggéré webpack).Vous devez vous assurer que vous êtes tout simplement le déploiement de la dist (court distribuable) dossier de votre projet généré par le Angulaire de la CLI. Cela permet à l'outil de prendre de votre code source et de ses dépendances et de vous donner uniquement ce que vous avez besoin pour exécuter votre application.
Cela étant dit, il y a eu un problème avec l'ouverture Angulaire de la CLI en ce qui concerne la production s'appuie par l'intermédiaire du `ng build --prod
Hier (le 2 août 2016) une version a été faite, qui commutation de la construction de mécanisme de brocoli + systemjs à webpack qui gère correctement la production s'appuie.
Sur la base de ces étapes:
Je vois un
dist
de la taille du dossier de 1.1 MO à travers le 14 fichiers répertoriés ici:Note Actuellement pour installer le webpack version de l'angle de la cli, vous devez exécuter...
npm install angular-cli@webpack -g
Angulaire lui-même a beaucoup de dépendances, et la version bêta de la CLI de téléchargements de quatre fois plus de fichiers.
C'est comment créer un simple projet moins les fichiers ("seulement" 10K fichiers)
https://yakovfain.com/2016/05/06/starting-an-angular-2-rc-1-project/
Semble comme personne ne l'avons mentionné Avance sur le Temps de Compilation, comme décrit ici: https://angular.io/docs/ts/latest/cookbook/aot-compiler.html
Mon expérience avec Angulaires jusqu'à présent, c'est que AoT crée le plus petit construit avec presque pas de temps de chargement. Et le plus important que la question ici est de - vous seulement besoin d'envoyer plusieurs fichiers à la production.
Ce qui semble être à cause de l'Angulaire compilateur ne sera pas livré avec la production se construit alors que les modèles sont compilés "à l'Avance". Il est aussi très cool de voir votre modèle HTML balisage transformé javascript instructions qui serait très difficile à inverser ingénieur dans le HTML d'origine.
J'ai fait une simple vidéo où je montre de taille de téléchargement, le nombre de fichiers etc. pour un Angulaires app dev vs AoT de construire que vous pouvez voir ici:
https://youtu.be/ZoZDCgQwnmQ
Vous trouverez le code source de la démo ici:
https://github.com/fintechneo/angular2-templates
Et - comme tous les autres, dit ici - il n'y a rien de mal quand il y a de nombreux fichiers dans votre environnement de développement. C'est la façon dont il est avec toutes les dépendances qui vient Angulaire, et de nombreux autres modernes de cadres. Mais la différence ici est que lors de l'expédition de la production, vous devriez être en mesure de l'emballer dans quelques fichiers. Aussi, vous ne voulez pas que tous ces fichiers de dépendance dans votre dépôt git.
Ce n'est effectivement pas Angulaire spécifique, il arrive avec presque n'importe quel projet qui utilise la NodeJs /mnp écosystème de son outillage.
Ces projets sont à l'intérieur de votre node_modules dossiers, et sont les transititve les dépendances de vos dépendances directes ont besoin pour fonctionner.
Dans le nœud de l'écosystème de modules sont généralement de petite taille, ce qui signifie qu'au lieu de développer des choses nous-mêmes, nous avons tendance à importer la plupart de ce que nous avons besoin sous la forme d'un module. Cela peut inclure de telles petites choses comme la célèbre gauche de la fonction pad, pourquoi l'écrire nous-mêmes s'il n'est pas un exercice ?
Afin d'avoir un grand nombre de fichiers son en fait une bonne chose, cela signifie que tout est très modulaire et module auteurs fréquemment réutilisés à d'autres modules. Cette facilité de modularité est probablement l'une des principales raisons pour lesquelles le nœud de l'écosystème a grandi si vite.
En principe, cela ne devrait pas poser de problème, mais il semble que vous exécutez dans un google app engine fichier de limite de nombre. Dans je cas, je suggère de ne pas transférer les node_modules à app engine.
au lieu de construire l'application localement et de les télécharger pour google app engine seulement le lot de filesn mais ne pas le construire dans l'app moteur lui-même.
Si vous utilisez angulaire de la cli de la version la plus récente utilisation
ng build --prod
Il va créer dist dossier qui ont moins de fichiers et de la vitesse de projet sera augmenté.
Aussi pour les tests en local avec les meilleures performances du moment cinétique de la cli vous pouvez utiliser
ng serve --prod
si vous utilisez Angulaire de la CLI, vous pouvez toujours utiliser l'option --minimes drapeau lorsque vous créez un projet
Je viens de lancer avec le drapeau et il crée de 24 600 fichiers et
ng build --prod
produit 212 KB dist dossierDonc, si vous n'avez pas besoin de fontaines à eau dans votre projet ou tout simplement envie de tester rapidement de quelque chose je pense que c'est assez utile
Voici une comparaison de ce qui prend plus d'espace angulaire des projets.
Si votre système de fichiers prend en charge les liens symboliques, alors vous pouvez au moins reléguer tous ces fichiers dans un dossier caché-pour qu'un outil intelligent comme
tree
ne s'affiche pas par défaut.À l'aide d'un dossier caché pour cela peut aussi encourager la compréhension que ce sont des construire des intermédiaires liés les fichiers qui n'ont pas besoin d'être enregistrés à la révision de contrôle-ou utilisé directement dans votre déploiement.
Il n'y a rien de mal. Ce sont toutes les dépendances node que vous avez mentionné dans le package.json.
Juste être prudent si vous devez télécharger certains de git hub projet, il pourrait avoir beaucoup d'autres dépendances qui ne sont pas réellement besoin angulaire 2 premier hello world app 🙂
-rxjs
-gulp
-tapuscrit
-tslint
-docker