0

我在这个项目上使用 Visual Studio 2010、.NET 4 和 MVC 2,YUI Compressor 作为构建后事件运行。

问题是我们有一个不可维护的大 css 文件,因此我们将其拆分为不同文件夹中的许多 CSS 文件。

  1. /资产/样式/Site.css
  2. /Assets/Styles/Pages/Page1.css
  3. /Assets/Styles/Pages/Page2.css
  4. /Assets/Styles/Pages/Page-nth.css
  5. /Assets/Styles/Partials/Partial1.css
  6. /Assets/Styles/Partials/Partial1.css
  7. /Assets/Styles/Partials/Partial-nth.css

类似的东西。

这对开发有利,但对生产不利。在生产中,我们只有 1 个文件,它是所有内容的合并/缩小版本,该文件位于 /Assets/Styles/style.css

现在这种设计引起了问题,因为图像路径在 dev 和 prod 中不能相同。(我们也有 staging 和 uat 但让我们保持简单)

我看到了一些解决方案,我们可以使用绝对路径,我们可以有许多缩小/合并的 css 文件并将它们放在正确的文件夹(Pages.css / Partials.css)中,或者我们可以使用无 cookie 的子域(静态.domain.com) 这是我想做的。

所以我的问题是:如何在我的 CSS 文件中自动将“../../image.png”重命名为“http://static.domain.com/image.png”?YUI Compressor 能做到吗?我应该制作一个可以做到这一点的构建控制台项目吗?你知道可以为我做这件事的工具吗?其他建议?!

提前致谢!

4

1 回答 1

0

YUI-compressor 无法做到这一点。

您需要遍历文件并将每个路径替换为新的绝对路径。您可以使用正则表达式轻松完成此操作。我不知道您是否可以在 windows-batch 中轻松地做到这一点,但使用 unix sed 或任何脚本(perl、python ...)很容易。如果您更熟悉 .NET,您可以构建一个控制台项目并将其作为构建后事件运行。

希望这可以帮助。

于 2011-06-30T07:58:17.497 回答