Estoy modularizando mis hojas de estilo con parciales SASS así:
@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
¿hay alguna manera de incluir todo el directorio de parciales (es un directorio lleno de parciales SASS) como @import compass o algo así?
@import 'partials/header', 'partials/viewport', 'partials/footer';
.Respuestas:
Si está utilizando Sass en un proyecto Rails, la gema sass-rails, https://github.com/rails/sass-rails , incluye la importación global.
Para responder a la inquietud en otra respuesta "Si importa un directorio, ¿cómo puede determinar el orden de importación? No hay forma de que no introduzca un nuevo nivel de complejidad".
Algunos argumentarían que organizar sus archivos en directorios puede REDUCIR la complejidad.
El proyecto de mi organización es una aplicación bastante compleja. Hay 119 archivos Sass en 17 directorios. Estos corresponden aproximadamente a nuestros puntos de vista y se utilizan principalmente para ajustes, con el trabajo pesado manejado por nuestro marco personalizado. Para mí, unas pocas líneas de directorios importados son un poco menos complejas que 119 líneas de nombres de archivos importados.
Para abordar el orden de carga, colocamos los archivos que deben cargarse primero (mixins, variables, etc.) en un directorio de carga temprana. De lo contrario, el orden de carga es y debería ser irrelevante ... si estamos haciendo las cosas correctamente.
fuente
@import "*"
(en application.css.scss) si los archivos css / scss de su controlador están en la carpeta "app / assets / stylesheets" junto con application.css.scss.@import "*"
en application.scss incluya todos los demás archivos presentes en el mismo directorio pero no vuelva a incluir application.scss ... esperaba obtener un error de bucle infinito.Esta característica nunca será parte de Sass. Una razón importante es el orden de importación. En CSS, los archivos importados en último lugar pueden anular los estilos indicados anteriormente. Si importa un directorio, ¿cómo puede determinar el orden de importación? No hay forma de que no introduzca un nuevo nivel de complejidad. Al mantener una lista de importaciones (como lo hizo en su ejemplo), está siendo explícito con el orden de importación. Esto es esencial si desea poder anular con confianza los estilos definidos en otro archivo o escribir mixins en un archivo y usarlos en otro.
Para una discusión más exhaustiva, vea esta solicitud de función cerrada aquí:
fuente
@import "/functions"
o@import "partials/"
.Echa un vistazo al proyecto sass-globbing .
fuente
Creo un archivo nombrado
__partials__.scss
en el mismo directorio departials
En
__partials__.scss
, escribí estos:Entonces, cuando quiera importar todo
partials
, solo escriba@import "partials"
. Si quiero importar alguno de ellos, también puedo escribir@import "partials/header"
.fuente
@import 'partials/xyz'
declaraciones cada vez que se crea un nuevo parcial.forms
ywidgets
directorios, que pueda@import "forms"; @import "widgets"
en el archivo principal de CSS de una página, y la única preocupación acerca de todos los parciales individuales (@import forms/text; @import forms/button
...) en el interiorforms.scss
ywidgets.scss
.Podría usar un poco de solución colocando un archivo sass en la carpeta que le gustaría importar e importar todos los archivos en ese archivo de esta manera:
ruta del archivo: main / current / _current.scss
@import "placeholders"; @import "colors";
y en el siguiente archivo de nivel de directorio solo usa importar para el archivo que importó todos los archivos de ese directorio:
ruta del archivo: main / main.scss
@import "EricMeyerResetCSSv20"; @import "clearfix"; @import "current";
De esa manera, tiene el mismo número de archivos, como si estuviera importando todo el directorio. Tenga cuidado con el orden, el archivo que viene último anulará los estilos coincidentes.
fuente
Es posible que desee retener el orden de origen, entonces puede usar esto.
Prefiero esto.
fuente
http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#import
no lo parece
Si alguno de estos archivos siempre requiere los otros, haga que importen los otros archivos y solo importen los de nivel superior. Si todos son independientes, entonces creo que tendrás que seguir haciéndolo como lo haces ahora.
fuente
La respuesta aceptada por Dennis Best afirma que "De lo contrario, el orden de carga es y debería ser irrelevante ... si estamos haciendo las cosas correctamente". Esto es simplemente incorrecto. Si está haciendo las cosas correctamente, utiliza el orden css para ayudarlo a reducir la especificidad y mantener su css simple y limpio.
Lo que hago para organizar las importaciones es agregar un
_all.scss
archivo en un directorio, donde importo todos los archivos relevantes, en el orden correcto. De esta manera, mi archivo de importación principal será simple y limpio, así:También puede hacer esto para subdirectorios, si lo necesita, pero no creo que la estructura de sus archivos css deba ser demasiado profunda.
Aunque uso este enfoque, sigo pensando que debería existir una importación global en sass, para situaciones en las que el orden no importa, como un directorio de mixins o incluso animaciones.
fuente
También busco una respuesta a tu pregunta. Corresponde a las respuestas la correcta importación de todas las funciones no existe.
Es por eso que he escrito un script de Python que debe colocar en la raíz de su carpeta scss de la siguiente manera:
Luego caminará a través del árbol y encontrará todos los archivos scss. Una vez ejecutado, creará un archivo scss llamado main.scss
Un ejemplo de un archivo de salida:
fuente
Esto funcionó bien para mi
fuente
Puede generar el archivo SASS que importa todo automáticamente, yo uso esta tarea Gulp:
También puede controlar el orden de importación ordenando las carpetas de esta manera:
fuente
Puede ser una pregunta antigua, pero aún relevante en 2020, por lo que podría publicar alguna actualización. Desde la actualización de Octobers'19 generalmente deberíamos usar @use en lugar de @import , pero eso es solo un comentario. La solución a esta pregunta es usar archivos de índice para simplificar la inclusión de carpetas completas. Ejemplo a continuación.
https://sass-lang.com/documentation/at-rules/use#index-files
fuente
@forward
en tu _index.scss en lugar de@use
Al definir el archivo a importar es posible usar todas las definiciones comunes de carpetas.
Entonces,
@import "style/*"
compilará todos los archivos en la carpeta de estilos.Puede encontrar más información sobre la función de importación en Sass aquí .
fuente