Comment éviter browserify-shim d'exiger toutes les cales?

voix
3

J'utilise browserify et browserify-shim dans un projet, exécutez par gulp en utilisant gulp-browserify.

    gulp.src(['./resources/js/main.js'])
    .pipe(browserify({
        shim: {
            angular: {
                path: './node_modules/angular/angular.js',
                exports: 'angular'
            },
            'angular-animate': {
                path: './node_modules/angular-animate/angular-animate.js',
                exports: 'ngAnimate',
                depends: {
                    angular: 'angular',
                    jQuery: 'jQuery'
                }
            },
            [...]
        }
    }))
    .pipe(concat('app.js'))
    .pipe(gulp.dest('./web/js'));

Cette configuration fonctionne très bien et, pour la plupart des régions, comme prévu. Cependant, Browserify comprendra toujours toutes les bibliothèques dans la construction calés, même si aucun d'entre eux est appelé par require ().

La documentation semble être inexistante sur ce sujet. Est-ce qu'il y a un moyen d'éviter cela? Il semble très contre-intuitif pour moi - la construction ne doit contenir que ce que je demande en fait.

(Mise à jour: J'ai installé libs angulaire et d'autres en utilisant napa / NPM)

Créé 17/02/2014 à 13:10
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

Lorsque vous Shim avec Browserify, cela rend ces bibliothèques (et plus précisément les objets que vous racontez à « l' exportation ») global. La convention est d'utiliser encore require()pour les bibliothèques, cependant, le faire est tout simplement la meilleure pratique de sorte que si la bibliothèque devait convertir en module.exportsbas de la route, vous ne devez remplacer les références mondiales dans votre code. De plus, il est plus agréable à la liste tous les fichiers dont vous avez besoin en haut en bonne node. :)

Donc , pour répondre à votre question, en calant les bibliothèques, vous avez dit browserify de les inclure comme variables globales afin qu'ils puissent être utilisés partout, donc ils seront inclus dans la construction automatiquement, que vous require()les.

Si vous voulez inclure certains et pas d' autres basés sur quelque chose comme gulp.env, vous pouvez essayer de construire les options qu'il objet séparément et passer dans la fonction browserify.

Créé 18/02/2014 à 15:44
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more