选择的答案无法提供可行的解决方案。
OP的做法似乎不规范。共享/公用文件通常partials
位于标准样板目录下。然后,您应该将partials
目录添加到配置导入路径,以便解析代码中任何位置的局部。
第一次遇到此问题时,我发现SASS可能为您提供了一个类似于Node的全局变量__dirname
,该变量保留了当前工作目录(cwd
)的绝对路径。不幸的是,并非如此,原因是因为@import
无法指令,因此您无法执行动态导入路径。
根据SASS文档。
您需要:load_paths
在Sass配置中进行设置。由于OP使用Compass,因此我将按照此处的说明进行操作。
您可以按预期使用CLI解决方案,但是为什么呢?将其添加到中更加方便config.rb
。使用CLI进行覆盖是有意义的config.rb
(例如,不同的构建方案)。
因此,假设您的 config.rb
位于项目根目录下,只需添加以下行:
add_import_path 'sub_directory_a'
现在@import 'common';
在任何地方都可以正常工作。
虽然这可以回答OP,但还有更多。
附录
您可能会遇到想要以嵌入式方式导入CSS文件的情况,也就是说,不是通过普通的@import
CSS指令直接提供的,而是通过CSS内容与您的SASS 的实际合并来导入的。还有另一个问题,这个问题无法得出结论(解决方案无法在跨环境下工作)。然后的解决方案是使用此 SASS扩展。
安装require 'sass-css-importer'
后,将以下行添加到您的配置中:然后在代码中的某个位置:@import 'CSS:myCssFile';
请注意,必须省略该扩展名才能起作用。
但是,当尝试从非默认路径导入CSS文件时,我们会遇到相同的问题,add_import_path
并且不考虑CSS文件。因此,要解决此问题,您需要在配置中添加另一行,这自然很相似:
add_import_path Sass::CssImporter::Importer.new('sub_directory_a')
现在,一切都会很好地进行。
PS,我注意到sass-css-importer
文档表明CSS:
除省略.css
扩展名外,还需要前缀。我发现它不管用。有人提出了一个问题,至今仍未解决。
-I
吗?如果该路径名更改,将进行大量搜索和替换;它需要与共享