Comment importer des CSS de node_modules dans webpack angular2 app
Disons que nous commençons par la suite starter pack:
https://github.com/angularclass/angular2-webpack-starter
Après npm install
et npm run start
tout fonctionne bien.
Je veux ajouter un css externe, module, par exemple bootstrap 4 du css (et seulement le css). (Je sais que bootstrap est un bootstrap loader, mais maintenant je pose la question générale de la solution, de sorte s'il vous plaît penser bootstrap 4 ici qu'il pourrait être un autre css du module qui est disponible via npm).
- Je installer bootstrap via npm: npm install [email protected] --save
J'ai d'abord pensé qu'il suffit d'ajouter import 'bootstrap/dist/css/bootstrap.css';
pour le vendeur.le navigateur.ts fichier.
Mais il n'est pas.
Que dois-je faire pour avoir une bonne solution?
Solutions je ne demande PAS de:
- "Copier le css externe du module dans le dossier actifs, et de l'utiliser à partir de là"
- Je suis à la recherche d'une solution qui fonctionne avec npm paquet.
- "Utiliser bootstrap loader pour webpack"
- Comme je l'ai décrit ci-dessus, je suis à la recherche d'une solution générale, bootstrap n'est qu'un exemple ici.
- "Utilisation d'une autre pile"
- Je suis à la recherche d'une solution exactement dans le pack de départ que j'ai mentionné ci-dessus.
- En êtes-vous des erreurs?
- C'est officiellement le meilleur à ce thread, j'ai jamais été sur. Stellaire question et deux également stellaire réponses. Merci à tous.
Vous devez vous connecter pour publier un commentaire.
Vous ne serez pas en mesure d'importer une feuille css de votre vendeurs fichier à l'aide de la pile, sans faire des changements.
Pourquoi? Eh bien parce que cette ligne:
C'est seulement l'importation de vos css en tant que chaîne de caractères, alors qu'en réalité, ce que vous voulez, c'est votre fournisseur css dans une balise style. Si vous cochez
config/webpack.commons.js
vous trouverez cette règle:Cette règle permet à vos composants à importer les fichiers css, essentiellement ceci:
Dans le AppComponent il n'y a pas d'encapsulation, à cause de cette ligne
encapsulation: ViewEncapsulation.None,
qui signifie que toutes les règles css sera appliquée globalement à votre application. Ainsi, vous pouvez importer le fichier de bootstrap styles dans votre application composant:Mais si vous insistez dans l'importation de votre
vendor.ts
alors vous aurez besoin d'installer un nouveau chargeur,npm i style-loader --save-dev
cela permettra webpack à injecter css de votre page. Ensuite, vous devez créer une règle spécifique, sur votre webpack.common.js et de modifier l'existant:La première règle sera appliquée uniquement lorsque vous essayez d'importer des css, de n'importe quel paquet à l'intérieur de
node_modules
la deuxième règle sera appliquée à tout le css que vous importez à partir de l'extérieur de lanode_modules
Il est possible en utilisant
@import '~bootstrap/dist/css/bootstrap.css';
sur les styles.fichier css. (Note de l' ~)Edit: Comment ça marche - Le '~' est un alias défini sur le webpack config pointant vers le dossier assets... simple comme ça..
Edit 2: Exemple sur la façon de configurer webpack avec le '~' alias...
cela devrait aller sur le webpack fichier de configuration (généralement
webpack.config.js
)...JS:
Voici donc un moyen d'importer divers
CSS
fichiers à l'aide de laangular-cli
que je trouve la plus pratique.Fondamentalement, vous pouvez vous référer à la
CSS
fichiers (l'ordre est important si vous leur remplaçant) dans la config etangular-cli
prendra soin du reste. Par exemple, vous souhaiterez peut-être inclure un couple de styles de nœud-modules, ce qui peut être fait comme suit:Un échantillon complet-config pourrait ressembler à ceci:
.angulaire de la cli.json