J’implémente une application côté client en JavaScript à l’aide de Node.js. Étant donné que je déploierai le logiciel sur de nombreuses machines, j’aimerais minimiser la taille du paquet que je dissortingbue. En particulier, je voudrais supprimer tous les fichiers inutiles de node_modules.
Pour commencer, cela signifie la suppression et l’élagage de l’arbre de dépendance, ce que npm
peut faire pour moi. Mais j’aimerais également supprimer tous les fichiers package.json
et (en particulier) tout autre fichier non nécessaire au déploiement. Dans beaucoup de paquets que j’utilise, il y a des tonnes de tests, de multiples versions de fichiers (minifiés, explorés, etc.), etc. J’ai juste besoin des fichiers JavaScript réellement utilisés par l’application en cours d’exécution. Sinon, je dissortingbuerai quelques 100 Ko de fichiers qui ne sont pas réellement utilisés.
Je connais node-browserify
mais mon application fonctionnera dans un environnement CommonJS, et non dans un navigateur. J’aimerais donc que les modules soient séparés et chargés avec require
.
Je songe à écrire un plug-in Grunt qui parcourt l’arborescence des dépendances à l’aide de required
, extrait les fichiers JavaScript nécessaires au moment de l’exécution et les écrit dans une arborescence afin qu’ils puissent être chargés à l’aide de require
(il suffit de charger directement les modules sans avoir besoin d’un package.json
). Mais je voudrais m’assurer que personne ne l’a fait pour moi avant de m’y attaquer.
Nous n’avons pas trouvé grun-package-minifier (ce n’est pas une réponse réelle. Je voulais commet en réponse ci-dessus mais je n’ai pas encore assez de réputation :().
npm installer grunt-package-minifier –save-dev Mot de passe: npm WARN package.json [email protected] Aucun champ de référentiel. npm WARN package.json [email protected] Pas de données README npm ERR! 404 404 Introuvable: grunt-package-minifier npm ERR! 404 pm rpm! 404 ‘grunt-package-minifier’ ne se trouve pas dans le registre npm.
FWIW: grunt-package-minifier
. Mon cas d’utilisation est un peu inhabituel puisque nous développons un framework d’extension multi-navigateurs . Comme Browserify
et contrairement aux déploiements NodeJS standard, nous souhaitons réduire la taille de notre dissortingbution, y compris les modules CommonJS. Mais contrairement à Browserify
nous prenons en charge CommonJS afin de pouvoir conserver la structure du module plutôt que de tout concaténer dans un seul fichier volumineux.
Essentiellement, je supprime tous les package.json
, README, fichiers de test, etc. de node_modules
mais node_modules
garde les fichiers JavaScript essentiels dans une structure pouvant être utilisée par un chargeur de modules CommonJS.