Je modularise mes feuilles de style avec des partiels SASS comme ceci:
@import partials/header
@import partials/viewport
@import partials/footer
@import partials/forms
@import partials/list_container
@import partials/info_container
@import partials/notifications
@import partials/queues
existe-t-il un moyen d'inclure tout le répertoire des partiels (c'est un répertoire plein de partiels SASS) comme @import compass ou quelque chose?
@import 'partials/header', 'partials/viewport', 'partials/footer';
.Réponses:
Si vous utilisez Sass dans un projet Rails, le joyau sass-rails, https://github.com/rails/sass-rails , propose l'importation globale.
Pour répondre à la préoccupation dans une autre réponse "Si vous importez un répertoire, comment pouvez-vous déterminer l'ordre d'importation? Il n'y a aucun moyen qui n'introduise un nouveau niveau de complexité."
Certains diront que l'organisation de vos fichiers dans des répertoires peut RÉDUIRE la complexité.
Le projet de mon organisation est une application assez complexe. Il y a 119 fichiers Sass dans 17 répertoires. Ceux-ci correspondent à peu près à nos vues et sont principalement utilisés pour les ajustements, le levage de charges lourdes étant géré par notre cadre personnalisé. Pour moi, quelques lignes de répertoires importés sont un peu moins complexes que 119 lignes de noms de fichiers importés.
Pour répondre à l'ordre de chargement, nous plaçons les fichiers qui doivent d'abord être chargés - mixins, variables, etc. - dans un répertoire à chargement précoce. Sinon, l'ordre de chargement est et ne devrait pas être pertinent ... si nous faisons les choses correctement.
la source
@import "*"
(dans application.css.scss) si les fichiers css / scss de votre contrôleur se trouvent dans le dossier "app / assets / stylesheets" avec application.css.scss.@import "*"
dans application.scss inclut tous les autres fichiers présents dans le même répertoire mais ne ré-inclut pas application.scss ... Je m'attendais à obtenir un bug de boucle infini.Cette fonctionnalité ne fera jamais partie de Sass. Une des principales raisons est la commande d'importation. En CSS, les fichiers importés en dernier peuvent remplacer les styles indiqués précédemment. Si vous importez un répertoire, comment pouvez-vous déterminer l'ordre d'importation? Il n'y a aucun moyen qui n'introduise un nouveau niveau de complexité. En conservant une liste d'importations (comme vous l'avez fait dans votre exemple), vous êtes explicite avec l'ordre d'importation. Ceci est essentiel si vous voulez pouvoir remplacer en toute confiance les styles définis dans un autre fichier ou écrire des mixins dans un fichier et les utiliser dans un autre.
Pour une discussion plus approfondie, consultez cette demande de fonctionnalité fermée ici:
la source
@import "/functions"
ou@import "partials/"
.Découvrez le projet sass-globbing .
la source
Je crée un fichier nommé
__partials__.scss
dans le même répertoire departials
Dans
__partials__.scss
, j'ai écrit ceci:Donc, quand je veux importer le tout
partials
, il suffit d'écrire@import "partials"
. Si je veux importer l'un d'eux, je peux aussi écrire@import "partials/header"
.la source
@import 'partials/xyz'
instructions chaque fois qu'un nouveau partiel est créé.forms
etwidgets
, je peux@import "forms"; @import "widgets"
dans le fichier CSS principal d'une page, et ne me soucier que de tous les partiels individuels (@import forms/text; @import forms/button
...) à l'intérieurforms.scss
etwidgets.scss
.Vous pouvez utiliser un peu de solution de contournement en plaçant un fichier sass dans le dossier que vous souhaitez importer et importer tous les fichiers de ce fichier comme ceci:
chemin du fichier: main / current / _current.scss
@import "placeholders"; @import "colors";
et dans le fichier de niveau dir suivant, vous utilisez simplement import for file ce qui a importé tous les fichiers de ce dir:
chemin du fichier: main / main.scss
@import "EricMeyerResetCSSv20"; @import "clearfix"; @import "current";
De cette façon, vous avez le même nombre de fichiers, comme si vous importiez le répertoire entier. Méfiez-vous de l'ordre, le fichier qui vient en dernier remplacera les montants correspondants.
la source
Vous voudrez peut-être conserver l'ordre source, vous pouvez simplement l'utiliser.
Je préfère ça.
la source
http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#import
ne ressemble pas à ça.
Si l'un de ces fichiers nécessite toujours les autres, demandez-leur d'importer les autres fichiers et d'importer uniquement les fichiers de niveau supérieur. S'ils sont tous autonomes, je pense que vous devrez continuer à le faire comme vous le faites maintenant.
la source
La réponse acceptée par Dennis Best déclare que "Sinon, l'ordre de chargement est et devrait être hors de propos ... si nous faisons les choses correctement." C'est tout simplement incorrect. Si vous faites les choses correctement, vous utilisez l'ordre css pour vous aider à réduire la spécificité et à vous garder css simple et propre.
Ce que je fais pour organiser les importations, c'est ajouter un
_all.scss
fichier dans un répertoire, où j'y importe tous les fichiers pertinents, dans le bon ordre. De cette façon, mon fichier d'importation principal sera simple et propre, comme ceci:Vous pouvez également le faire pour les sous-répertoires, si vous en avez besoin, mais je ne pense pas que la structure de vos fichiers CSS devrait être trop profonde.
Bien que j'utilise cette approche, je pense toujours qu'une importation globale devrait exister dans sass, pour les situations où l'ordre n'a pas d'importance, comme un répertoire de mixins ou même des animations.
la source
Je recherche également une réponse à votre question. Correspond aux réponses, la fonction d'importation correcte n'existe pas.
C'est pourquoi j'ai écrit un script python que vous devez placer à la racine de votre dossier scss comme ceci:
Il parcourra ensuite l'arborescence et trouvera tous les fichiers scss. Une fois exécuté, il créera un fichier scss appelé main.scss
un exemple de fichier de sortie:
la source
CA marchait bien pour moi
la source
Vous pouvez générer un fichier SASS qui importe tout automatiquement, j'utilise cette tâche Gulp:
Vous pouvez également contrôler l'ordre d'importation en commandant les dossiers comme ceci:
la source
Ce pourrait être une vieille question, mais toujours d'actualité en 2020, donc je pourrais poster une mise à jour. Depuis la mise à jour d' octobre 19 , nous devrions généralement utiliser @use au lieu de @import , mais ce n'est qu'une remarque. La solution à cette question consiste à utiliser des fichiers d'index pour simplifier l'inclusion de dossiers entiers. Exemple ci-dessous.
https://sass-lang.com/documentation/at-rules/use#index-files
la source
@forward
dans votre _index.scss au lieu de@use
En définissant le fichier à importer, il est possible d'utiliser toutes les définitions communes des dossiers.
Donc,
@import "style/*"
compilera tous les fichiers dans le dossier de style.Pour en savoir plus sur la fonction d'importation dans Sass, cliquez ici .
la source