La respuesta seleccionada no ofrece una solución viable.
La práctica de OP parece irregular. Un archivo compartido / común normalmente se encuentra debajo de partials
un directorio repetitivo estándar. Luego debe agregar un partials
directorio a sus rutas de importación de configuración para resolver parciales en cualquier lugar de su código.
Cuando encontré este problema por primera vez, pensé que SASS probablemente le brinda una variable global similar a la de Node __dirname
, que mantiene una ruta absoluta al directorio de trabajo actual ( cwd
). Desafortunadamente, no es así y la razón es porque la interpolación en una @import
directiva no es posible, por lo tanto, no puede hacer una ruta de importación dinámica.
Según los documentos de SASS .
Necesita establecer :load_paths
su configuración de Sass. Dado que OP usa Compass, lo seguiré de acuerdo con la documentación aquí .
Puede optar por la solución CLI según lo previsto, pero ¿por qué? es mucho más conveniente agregarlo config.rb
. Tendría sentido usar CLI para anular config.rb
(por ejemplo, diferentes escenarios de compilación).
Entonces, asumiendo que config.rb
está bajo la raíz del proyecto, simplemente agregue la siguiente línea:
add_import_path 'sub_directory_a'
Y ahora @import 'common';
funcionará bien en cualquier lugar.
Si bien esto responde a OP, hay más.
Apéndice
Es probable que se encuentre con casos en los que desee importar un archivo CSS de forma incrustada, es decir, no a través de la @import
directiva básica que CSS proporciona de fábrica, sino una combinación real del contenido de un archivo CSS con su SASS. Hay otra pregunta , que no se responde de manera concluyente (la solución no funciona en varios entornos). Entonces, la solución es utilizar esta extensión SASS.
Una vez instalado, agregue la siguiente línea a su configuración: require 'sass-css-importer'
y luego, en algún lugar de su código:@import 'CSS:myCssFile';
Tenga en cuenta que la extensión debe omitirse para que esto funcione.
Sin embargo, nos encontraremos con el mismo problema al intentar importar un archivo CSS desde una ruta no predeterminada y add_import_path
no respeta los archivos CSS. Entonces, para resolver eso, debe agregar otra línea en su configuración, que es naturalmente similar:
add_import_path Sass::CssImporter::Importer.new('sub_directory_a')
Ahora todo funcionará bien.
PD: noté que la sass-css-importer
documentación indica CSS:
que se requiere un prefijo además de omitir la .css
extensión. Descubrí que funciona independientemente. Alguien inició un problema , que hasta ahora no ha recibido respuesta.
-I
? Si ese nombre de ruta cambia, habrá muchas búsquedas y reemplazos; y requiere la misma estructura de carpetas locales de cualquiera que comparta el .scss