2017-06-16 2 views
1

ma question est la suivante: chaque fois que je suis en utilisant la syntaxe suivante à l'intérieur angulaire ->webpack 2, angulaire 2 - en utilisant « besoin » avec le chemin construit en utilisant la variable

let myCmp = 'test1'; 

let cmp = require('./components/'+myCmp+'/bootstrapCmp.component.ts'); 

Je reçois tous les composants que dans le dossier des composants de mon bundle final, pas seulement 'test1';

(J'utilise le pack de démarrage WebPack 2 angulaire de l'équipe de AngularClass - https://github.com/AngularClass/angular-starter

Had quelqu'un cette question trop

le composant je charge/donc est tous les autres sont de base . 2 composants angulaires

merci à l'avance, je me bats avec elle pour trop ^^

+0

Pensez au cas général. Comment bundler sait-il à l'avance quels composants inclure dans le bundle sans exécuter le code? –

+0

Vous pouvez également lire ceci [discussion] (https://github.com/webpack/webpack/issues/1421). –

+0

@YuryTarabanko merci pour une réponse rapide! la seule réponse que je peux penser quand vous le dites est en utilisant les fichiers de configuration de webpack .. est-il possible d'exiger les fichiers pertinents dans le fichier de configuration de webpack et d'y accéder dans l'application de l'angulaire? et pourquoi le bunlder ne peut pas lire la valeur de la variable en l'utilisant dans un chemin de la demande? –

Répondre

0

espèrent la solution que j'ai trouvé pour moi-même aider d'autres développeurs:

dans le fichier webpack.common.js J'ai ajouté un nouveau fichier à mon objet d'entrée que j'ai appelé: boot.js.

si la structure est comme ceci:

entry: { 
    main:['./src/polyfills.browser.ts','./src/assets/boot.ts','./src/main.browser.ts'] 
} 

le fichier boot.ts, contient un objet avec tous les composants relavent que je vais utiliser (références).

alors que le bunlder (wepback) est en cours d'exécution, chaque fois que j'ai besoin d'un composant je vais créer cet objet dans le fichier boot.ts, le fichier final contient uniquement les composants que je veux.