Vincent Barrault

Remplacer @import par @use dans Sass

Remplacer @import par @use dans Sass

Table des matières

La documentation de @import

La dernière fois que je suis allé sur la page de documentation de @import, je me suis rendu compte qu'ils avaient commencer à laisser tomber @import pour le remplacer par @use.

@Import devient deprecated

Changer pour dart-saas

Si je ne l'ai pas déjà fait, je vais changer la version de mes projets Sass pour la version "dart".

Quelques explications ici:

Quelle difference entre @use et @import ?

La grande différence entre les deux méthodes est que @use crée un namespace quand il importe un fichier alors que @import ajoute tous les mixin, toutes les variables et tout le code scss de manière globale.

Utiliser @use va donc me permettre de ne plus avoir peur d'écraser un sélecteur ou une variable lors d'un import.

Par exemple, si j'ai un fichier contenant des variables et un composant:

./_other.scss
$myColor: #FF0000;

p {
    color: $myColor;
}

Et que je veux l'inclure dans mon fichier scss principal:

./style.scss
@use "other";

$myColor: #00FF00;

h1 {
    color: other.$myColor;
}

h2 {
    color: $myColor;
}

Lorsque j'exécute la commande sass style.scss style.css, je génère un fichier css comme ceci:

./style.css
p {
  color: #FF0000;
}

h1 {
  color: #FF0000;
}

h2 {
  color: #00FF00;
}

/*# sourceMappingURL=style.css.map */

La migration de @import vers @use

Ajouter des namespace partout peut être long et dangereux. Je vais donc trouver une autre méthode.

La methode as me permet de renommer le namespace lors de l'import, et si je fais as *, les éléments seront importés dans le namespace courant.

Donc je transforme:

@import "other";

h1 {
    color: $myColor;
}

ainsi:

@use "other" as *;

h1 {
    color: $myColor;
}

Plus tard, au fur et à mesure, je rajouterai les namespaces pour plus de sécurité.

@use "other";

h1 {
    color: other.$myColor;
}