web-dev-qa-db-fra.com

Qu'est-ce que le répertoire node_modules dans AngularJS?

J'explore AngularJS tutorial project et a trouvé qu'il a node_modules répertoire à l'intérieur, dont la taille est de 60 mégaoctets.

Un projet javascript simple côté client a-t-il vraiment besoin d'un corpus si énorme de données inconnues?

J'ai essayé de supprimer ce répertoire et le projet fonctionne toujours. Je soupçonne que cela a un rapport avec node.js et c'est npm mais comment? Supposons que je doive exécuter mon projet sur un serveur Web conventionnel (pas node.js), alors comment savoir quels fichiers/répertoires sont inutiles?

De nombreuses bibliothèques javascript nécessitent d'utiliser bower pour les installer. Si j'utilise bower, cela signifie-t-il que je dois garder node_modules?

21
Dims

Le node_modules le répertoire est uniquement pour outils de compilation.

Le package.json le fichier à la racine de l'application définit les bibliothèques qui seront installées dans node_modules lorsque vous exécutez npm install.

Très souvent, avec une application angular, sur votre machine de développement ou sur un serveur de build, vous utilisez d'autres bibliothèques Javascript de npm (un gestionnaire de packages node.js) pour construire votre angular app. Les tâches peuvent être la concaténation de ressources, en utilisant des préprocesseurs CSS comme LESS ou SASS, la minification, le remplacement de valeurs, etc. etc. Les outils les plus courants pour gérer et exécuter ces tâches sont appelés grunt et gulp, qui sont également installés via npm.

Lorsque vous déployez votre application, vous distribuez uniquement la génération résultante, pas les fichiers source ou les outils de génération.

Il est bien sûr possible d'écrire une application AngularJS sans rien construire.

modifier à partir des commentaires: lorsque vous plongez dans Angular plus, il existe des techniques plus avancées d'utilisation des bibliothèques installées par npm même dans l'application cliente, vous choisissez ensuite de manière sélective celles dont vous avez besoin, pas les 50 Mo + Je recommanderais de rester avec les approches de base jusqu'à ce que vous les compreniez bien.

23
vvondra

NPM est le gestionnaire de packages de nœuds, qui installe les packages localement dans un projet, en particulier dans le dossier node_modules. De là, le code du package peut être inclus dans un projet, oui, peut est le mot important là-bas.

Le navigateur n'a aucun moyen d'inclure des modules dans le code (pour l'instant), vous devez donc utiliser une bibliothèque qui peut exposer les modules de style commonJS du nœud. Browserify et Webpack sont deux méthodes populaires pour ce faire.

Angular complique cela en introduisant son propre système de modules, qui ressemble davantage à des modules de style AMD. Il existe des moyens de contourner cela, afin que vous puissiez utiliser des modules de style nœud, peut-être que votre projet les utilise.

Utiliser npm pour gérer les dépendances est une excellente idée, c'est un fantastique gestionnaire de paquets. Il est probable que dans votre cas, le projet est uniquement généré à l'aide de node et que le dossier node_modules Contient des dépendances uniquement liées à la génération.

2
Matt Styles