72 votes

Comment utiliser Bootstrap 4 avec SASS en angulaire

J'aimerais utiliser Bootstrap 4 avec SASS dans Angulaire(4+) est un projet créé avec Angulaire de la CLI.

En particulier, j'ai besoin de:

  • l'utilisation de SASS au lieu de CSS à la fois comme style global et de Composants de style
  • compiler Bootstrap SASS source avec mon personnalisée *.scss styles
  • assurez-vous que mes styles personnalisés remplacer le Bootstrap source, de sorte que je peux remplacer le Bootstrap sources lorsque cela est nécessaire, sans modifier le Bootstrap de la source elle-même (ce qui la rend facile à mettre à jour le fichier de Bootstrap version source)
  • ajouter watch & auto-recompiler à chaque fois que l'un de mes *.scss de modification des fichiers (à la fois pour les composants & style global) à l' ng serve script

135voto

Shin Points 10934

Afin de configuration Angulaire + Bootstrap 4 utilisation de SASS nous avons juste besoin de configurer l'angle de la CLI et installer le Bootstrap 4 mnp paquet. Il n'y a aucun besoin d'installer SASS compilateur car il est déjà inclus.

EDIT: cette réponse a été mis à jour pour fonctionner avec une version plus récente Angulaire de la CLI (testé avec la version 6.1.3). J'ai laissé les instructions pour les plus âgés Angulaire de la CLI dans le fond de cette réponse, cependant je vous recommande fortement de mettre à jour vos Angulaire de la version CLI.


Des INSTRUCTIONS à l'AIDE de NOUVELLES ANGULAIRE de la CLI (version 6 ou supérieure)

1) Configurer Angulaire de la CLI pour utiliser SASS au lieu de CSS

- Sur les projets existants:

Modifier votre angular.json le fichier et ajouter l' "styleext": "scss" de la valeur de clé à l' projects.PROJECT_NAME.schematics.@schematics/angular:component objet.

C'est comment il devrait ressembler à:

{
  // ...
  "projects": {
    "PROJECT_NAME": {
      // ....
      "schematics": {
        "@schematics/angular:component": {
          "styleext": "scss"
        }
      },
  // ...
}

- Lors de la création d'un nouveau projet

Utilisez simplement:

ng new my-project --style=scss

2) Changer le Composant existant styles de CSS SASS (le cas échéant)

Pour ce faire vous avez juste besoin de renommer le fichier de style d' .css de .scss et de modifier l' @Component({ ... }) configuration en conséquence:

styleUrls: ['./my-component.scss']

De cette façon, le angulaires-cli automatiquement les regarder et de les recompiler ces fichiers à chaque fois qu'ils changent pendant l'exécution des commandes comme ng serve.

3) Ajouter Bootstrap 4

Installer Bootstrap 4 via npm:

npm install bootstrap --save

Maintenant, ajoutez de Bootstrap pour l' angular-cli.json config à l'intérieur de l' styles array (avant tout autre custom css/scss fichiers afin de les laisser remplacer bootstrap règles :

"styles": [
  "node_modules/bootstrap/scss/bootstrap.scss",
  /* ... */
],

De cette façon, le Bootstrap 4 code source restera propre et il sera très facile de le mettre à jour à chaque fois qu'une nouvelle version est disponible.

4) Ajouter votre personnalisé (global) des fichiers SASS

Supplémentaires SASS styles qui devrait incidence globale sur le projet (à la différence de la seule Composante de styles) peut être ajoutée en vertu de l' app/assets/scss puis référencés dans l' styles tableau d' angular-cli.json.

Ma suggestion est de faire référence à un seul main.scss le fichier qui contiendra toutes vos personnalisée SASS styles: par exemple, un _variables.scss pour vos variables personnalisées, un _global.scss le fichier pour l'ensemble de vos règles, etc..

Donc, dans votre angular-cli.json vous sera juste une référence personnalisés main.scss le fichier:

"styles": [
  "node_modules/bootstrap/scss/bootstrap.scss",
  "src/assets/scss/main.scss"
],

qui inclut en interne sur mesure toutes vos global* SASS code:

// main.scss 
@import "variables";
@import "global";
// import more custom files...

*Notez que vous ne DEVEZ PAS inclure ici l' *.scss des fichiers de style de chacun des Composants.

5) Comprennent le remplacement de Bootstrap, JavaScript et jQuery.

Il y a certains projets qui vous permettent d'utiliser Bootstrap sans jQuery.

Deux exemples:

La différence entre ces deux projet est discuté ici: Quelle est la différence entre "ng-bootstrap" et "ngx-bootstrap"?


INSTRUCTIONS À L'AIDE DE VIEUX ANGULAIRE DE LA CLI

AVERTISSEMENT: je ne vais pas maintenir cette partie de la réponse de plus, afin de procéder plutôt de le lire, je vous recommande de mettre à jour vos Angulaire de la version CLI et en suivant les instructions ci-dessus.

1) Configurer Angulaire de la CLI pour utiliser SASS au lieu de CSS

Exécuter:

ng set defaults.styleExt scss

cela aura une incidence sur votre .angular-cli.json le fichier config ( exemple ).

Remarque: dans le cas où vous êtes à partir de zéro, vous pouvez créer un nouveau projet à l'aide Angulaire de la CLI à l'aide de: ng new my-project --style=scss qui est l'équivalent de la création d'un nouveau projet normalement, puis en exécutant la commande mentionnée ci-dessus.

2) Changer le Composant existant styles de CSS SASS (le cas échéant)

Pour ce faire vous avez juste besoin de renommer le fichier de style d' .css de .scss et de modifier l' @Component({ ... }) configuration en conséquence:

styleUrls: ['./my-component.scss']

( exemple ).

De cette façon, le angulaires-cli automatiquement les regarder et de les recompiler ces fichiers à chaque fois qu'ils changent pendant l'exécution des commandes comme ng serve.

3) Ajouter Bootstrap 4

Installer Bootstrap 4 via npm:

npm install bootstrap --save

Maintenant, ajoutez de Bootstrap pour l' .angular-cli.json config à l'intérieur de l' styles array (avant tout autre custom css/scss fichiers afin de les laisser remplacer bootstrap règles :

"styles": [
  "../node_modules/bootstrap/scss/bootstrap.scss",
  /* ... */
],

( exemple ).

De cette façon, le Bootstrap 4 code source restera propre et il sera très facile de le mettre à jour à chaque fois qu'une nouvelle version est disponible.

4) Ajouter votre personnalisé (global) des fichiers SASS

Supplémentaires SASS styles qui devrait incidence globale sur le projet (à la différence de la seule Composante de styles) peut être ajoutée en vertu de l' app/assets/scss puis référencés dans l' styles tableau d' .angular-cli.json.

Ma suggestion est de faire référence à un seul main.scss le fichier qui contiendra toutes vos personnalisée SASS styles: par exemple, un _variables.scss pour vos variables personnalisées, un _global.scss le fichier pour l'ensemble de vos règles, etc.. ( exemple).

Donc, dans votre .angular-cli.json vous sera juste une référence personnalisés main.scss le fichier:

"styles": [
  "../node_modules/bootstrap/scss/bootstrap.scss",
  "assets/scss/main.scss"
],

qui inclut en interne sur mesure toutes vos global* SASS code:

// main.scss 
@import "variables";
@import "global";
// import more custom files...

*Notez que vous ne DEVEZ PAS inclure ici l' *.scss des fichiers de style de chacun des Composants.

5) Comprennent le remplacement de Bootstrap, JavaScript et jQuery.

Il y a certains projets qui vous permettent d'utiliser Bootstrap sans jQuery.

Deux exemples:

La différence entre ces deux projet est discuté ici: Quelle est la différence entre "ng-bootstrap" et "ngx-bootstrap"?

22voto

LeoTM Points 1

En plus de la réponse de @ ShinDarth, vous pouvez opter pour une solution plus minimale, en important uniquement les modules Bootstrap dont vous avez besoin à la place de tous.

Donc, vous remplaceriez:

 "styles": [
  "../node_modules/bootstrap/scss/bootstrap.scss",
  "assets/scss/main.scss"
],
 

Avec:

 "styles": [
  "assets/scss/main.scss"
],
 

Alors votre main.scss ressemblerait à ceci:

 // import only the Bootstrap modules you need, e.g.
@import "~bootstrap/scss/functions";
@import "~bootstrap/scss/variables";
@import "~bootstrap/scss/mixins";
@import "~bootstrap/scss/grid";
@import "~bootstrap/scss/navbar";
@import "~bootstrap/scss/forms";
// import your own custom files, e.g.
@import "variables";
@import "global";
 

10voto

Whisher Points 1853

À partir de la version 6 devrait être

 "styles": [
   "node_modules/bootstrap/scss/bootstrap.scss",
   "src/styles.scss",
   "src/assets/scss/main.scss"
]
 

Si vous avez un thème personnalisé pour moi fonctionne

ajouter seulement la lib dans les styles.scss

 @import "./assets/scss/mytheme";
@import "~bootstrap/scss/bootstrap";
 

0voto

Atilla Baspinar Points 41

Voici une autre façon, j'ai réussi à créer avec succès

1 - Installer bootstrap

npm install bootstrap 

Cela devrait ajouter de bootstrap scss fichier sous node_modules. (Étape 2 - 6 est de https://code.visualstudio.com/docs/languages/css)

2 - Installer le nœud-sass

nmp install -g node-sass

Ce qui est nécessaire pour transpile sass en css

3 - Créez un dossier où est approprié pour vous de garder scss et a généré des fichiers css. par exemple

your-project/
├── scss
│   └── custom.scss   
└── node_modules/
    └── bootstrap
        ├── js
        └── scss

4 - Créer un personnalisé.scss fichier avec le contenu suivant:

@import "../node_modules/bootstrap/scss/bootstrap";

5 - Créer une tâche dans VSCode par Ctrl+Maj+B > Configurer les Tâches > Créer des tâches.fichier json à partir d'un modèle > Autres

les tâches.fichier json en vertu de l' .vscode est créé avec le contenu par défaut. Remplacer le contenu avec

// Sass configuration
{
  // See https://go.microsoft.com/fwlink/?LinkId=733558
  // for the documentation about the tasks.json format
  "version": "2.0.0",
  "tasks": [{
    "label": "Sass Compile",
    "type": "shell",
    "command": "node-sass scss/custom.scss scss/custom-bootstrap.css",
    "group": "build",
    "problemMatcher": [
      "$eslint-stylish"
    ]
  }]
}

Remarque: Modifier les noms de fichiers et les chemins d'accès en fonction de vos besoins.

6 - Exécution de la tâche pour générer le css: Ctrl+Maj+B > "Sass compiler" ou

7 - Suivre les étapes dans le bootstrap de la thématisation de la procédure: (https://getbootstrap.com/docs/4.1/getting-started/theming/)

-1voto

vhbazan Points 91

Dans le cas où quelqu'un d'autre de lancer dans le Javascript dépendances problème que j'ai eu lors de l'exécution de Bootstrap 4 à l'aide angulaires-cli, vous devez laisser le angulaires-cli compilateur de savoir que vous avez installé les autres dépendances de bootstrap 4 besoins:

jquery, popper.js et bootstrap.js

Pour cela vous avez besoin de modifier les scripts de tableau sur le .angulaire de la cli.json fichier de configuration à quelque chose comme ceci:

"scripts": [
    "../node_modules/jquery/dist/jquery.slim.js", 
    "../node_modules/popper.js/dist/umd/popper.js",
    "../node_modules/bootstrap/dist/js/bootstrap.js"]

Je suppose que vous avez installé jquery et popper à l'aide de npm install --enregistrer jquery popper.js de sorte que ceux-ci sont disponibles sur le dossier node_modules.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X