我有两个项目。一个是面向公众的网站,另一个是管理方面。我在两个页面上都有相同的页面。
我的目录结构如下:
/public
config.rb
/images
/upgrade
/sprites
/sass
/upgrade
index.scss
/stylesheets
/cms
config.rb
/sass
/upgrade
index.scss
/stylesheets
public/sass/upgrade/index.scss
是所有风格的所在。 cms/sass/upgrade/index.scss
导入这些样式,如下所示:
@import '../../../public/sass/upgrade'
这些工作正常,我可以生成cms/stylesheets/upgrade/index.css
的CSS。我正在遇到sprite生成问题。在public/sass/upgrade/index.scss
内部,sprite png的导入看起来像这样
@import 'upgrade/sprites/*.png';
使用LiveReload,我收到以下错误:
Cannot determine the opposite position of: to
Cannot determine the opposite position of: to
Cannot determine the opposite position of: to
No files were found in the load path matching "setup/packages/*.png". Your current load paths are: ./images
这是有道理的,因为当我编译我的cms/sass/upgrade/index.scss
时,它在cms/images/upgrade/sprites
中寻找没有的图像。
我很想知道是否有人遇到过这个问题并且有任何解决方案如何跨项目共享资产。我认为设置relative_assets = true
会有所帮助,但事实并非如此。也许我错了。我不知道。
答案 0 :(得分:1)
我确信cimmanon建议创建符号链接应该有效。你确定你做得对吗?为了安全起见,请使用绝对路径。
你的项目结构有点搞笑,我没能完全理解它,所以我无法给你精确的符号链接位置和目标。如果您希望我们为您提供准确的路径,请通过以下方式更新您的问题:
UPD:确保您的Apache配置已启用FollowSymLinks,并且PHP配置包含include_path中的所有项目目录。
如果你放弃,你可以使用我刚刚发明的讨厌的黑客。 :d
我们的想法是创建一个自定义SASS函数,该函数根据调用的项目返回不同的结果。这将允许从public/sass/upgrade/index.scss
导入不同的路径,具体取决于您正在编译的项目。
在public/config.rb
中,添加:
# Assign a name to the project and pass it into SASS
$project_name = "public"
module Sass::Script::Functions
def project_name
Sass::Script::String.new($project_name)
end
end
cms/config.rb
的添加非常相似。唯一的区别是$ project_name的值:
# Assign a name to the project and pass it into SASS
$project_name = "cms"
module Sass::Script::Functions
def project_name
Sass::Script::String.new($project_name)
end
end
之后,修改public/sass/upgrade/index.scss
中的导入行:
@if project-name() == public {
@import 'upgrade/sprites/*.png';
} @else if project-name() == cms {
@import '../../../public/upgrade/sprites/*.png';
}
我的示例中的导入路径是弯曲的,请调整它们以符合您的环境。
UPD2: @import
指令不允许在@if
等控制指令中使用。所以你可以使用:
@if project-name() == public {
$path: 'upgrade/sprites/*.png';
} @else if project-name() == cms {
$path: '../../../public/upgrade/sprites/*.png';
}
@import #{$path};