我们在symfony2中遇到来自另一个捆绑包的@import
个scss文件时出现问题。
/files/...
。/var/www/...
提供,链接到机器A中的/files/...
。/var/www/...
,其中包含副本的源文件。让我们关注一个包含着色和大小定义的Layout.scss
文件。这些是我的道路:
# Source code (machine A)
xavi@bromo$ cd /files/custom_www/guparty/workspace/guparty/Applications/Common/bundles/LayoutBundle/Resources/public/Sass
xavi@bromo$ ls -l Layout.scss
-rw-rw-r-- 1 xavi xavi 7528 2013-03-28 12:18 Layout.scss
# Devel (machine A)
xavi@bromo$ cd /var/www/guparty/workspace/www/frontend/src/gUparty/
xavi@bromo$ ls -l Common
lrwxrwxrwx 1 xavi xavi 71 2013-03-28 12:26 Common -> /files/custom_www/guparty/workspace/guparty/Applications/Common/bundles
# Production (machine B)
ubuntu@ProductionLarge1$ cd /var/www/www.guparty.com/src/gUparty/
ubuntu@ProductionLarge1$ ls -ld Common/
drwxr-xr-x 21 www-data www-data 4096 2013-03-28 07:35 Common/
现在让我们考虑一下将包含上一个文件的文件Test.scss
:
# Seen from the source code point of view:
/files/custom_www/guparty/workspace/guparty/Applications/FrontEnd/bundles/TestingBundle/Resources/public/Sass/Test.scss
# Seen from the devel apache point of view (links to the one above):
/var/www/guparty/workspace/www/frontend/src/gUparty/FrontEnd/TestingBundle/Resources/public/Sass/Test.scss
# Seen from the production apache point of view:
/var/www/www.guparty.com/src/gUparty/FrontEnd/TestingBundle/Resources/public/Sass/Test.scss
Test.scss
文件以@import
指令开头,如下所示:
@import "../../../../../../../src/gUparty/Common/LayoutBundle/Resources/public/Sass/Layout.scss";
麻烦
从包含文件副本的制作机器看,它就像一个魅力。
然而,当从开发机器运行时,我预计它会起作用,因为相对路径是相同的。相反,操作系统没有显示链接文件到apache / php,看起来资产“需要知道”真实路径。
在devel中,导入失败,如果我将@import
更改为此,则可以正常工作:
@import "../../../../../../../Applications/Common/bundles/LayoutBundle/Resources/public/Sass/Layout.scss";
我看到的解决方案,但不知道如何实施
a)也许我可以配置一些东西,以便PHP看到“相对路径而不重新映射符号链接”。
b)也许我可以将参数.ini或类似的“变量”传递到.scss文件中,这样我就可以“发现”我是处于“链接模式”还是“复制模式”并制作{{ 1}}使用一个或另一个路径。
任何实现a或b的方法? 这两种策略之间有何偏好? 任何替代战略?
谢谢! 哈维。
答案 0 :(得分:0)
两种解决方案都是可能的。
a)也许我可以配置一些东西,以便PHP看到“相对路径而不重新映射符号链接”。
确保您的Apache配置启用了FollowSymLinks,并且PHP配置包含include_path中的所有项目目录。
b)也许我可以将参数.ini或类似的“变量”传递到.scss文件中,这样我就可以“发现”我是否处于“链接模式”或“复制模式”并制作@import使用一条路径或另一条路径。
创建一个自定义SASS函数,该函数根据调用的项目返回不同的结果。这将允许从public / sass / upgrade / index.scss导入不同的路径,具体取决于您正在编译的项目。
有关这两者的详细信息,请参阅Compass: Importing files from another project directory。