Sass Compass:从其他项目目录导入文件
我有两个项目。一个是为我们的网站面向公众的一面,另一个是为管理方面。我有一个在两页上都相同的页面 我的目录结构如下:Sass Compass:从其他项目目录导入文件,sass,compass-sass,Sass,Compass Sass,我有两个项目。一个是为我们的网站面向公众的一面,另一个是为管理方面。我有一个在两页上都相同的页面 我的目录结构如下: /public config.rb /images /upgrade /sprites /sass /upgrade index.scss /stylesheets /cms config.rb /sass /upgrade index.scss /stylesheets publ
/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'
这些很好用,因为我可以将css生成到cms/stylesheets/upgrade/index.css
。我遇到的问题是精灵一代。在public/sass/upgrade/index.scss
中,精灵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\u assets=true
会有所帮助,但事实并非如此。也许我用错了。我不知道。我确信西曼侬关于创建符号链接的建议应该有效。你确定你做得对吗?为了安全起见,请使用绝对路径
你的项目结构有点滑稽,我没有完全理解它,所以我不能给你确切的符号链接位置和目标。如果您希望我们为您提供确切的路径,请更新您的问题:
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\u 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};
你可以让
images\u dir
指向你想要的任何地方,包括项目目录之外。我需要images\u dir指向它们各自的项目图像目录。这只是一种情况,我需要从这两个位置加载图像。为图像创建符号链接有效吗?我尝试了,但没有成功。请查看我的答案,如果它符合您的需要,请接受。