【问题标题】:Web essentials changing relative paths in compiled cssWeb Essentials 在编译的 css 中更改相对路径
【发布时间】:2014-05-05 10:30:26
【问题描述】:

我在一个项目中使用 Web Essentials 2013 在构建/保存时将 less 编译为 css。但是,我在编译时遇到了问题,我们正在篡改字体/图像等的相对路径。

例如:

.footer {
    background: url('../img/footer_background.svg') no-repeat top center;
 }

变成:

.footer {
  background: url('img/footer_background.svg') no-repeat top center;
}

我记得之前有一个类似的问题,但是在 web Essentials CSS 选项中将“调整相对路径”设置为 false 就解决了这个问题。现在好像不行了。我已经尝试了最新的稳定版和最新的 nightly 版,都给出了相同的行为。

有什么建议吗? :)

【问题讨论】:

    标签: css visual-studio less web-essentials


    【解决方案1】:

    我知道你提到了 2013 年,但我在 2015 年遇到了同样的问题,发现如果我在 compilerconfig.json.defaults 中设置"relativeUrls": false,那么提到的问题就会停止。作为参考,我正在使用 VS 2015 Pro upd2 和 Web 编译器扩展 v1.11.315。

    【讨论】:

      【解决方案2】:

      mlhDev 的答案很接近,但实际上我必须根据项目的GitHub issue 在 compilerconfig.json 文件中更改它,而不是默认文件。我的配置如下:

      [
        {
          "outputFile": "StyleSheets/something.css",
          "inputFile": "StyleSheets/scss/something.scss",
          "options": {
              "relativeUrls": false
          }
        }
      ]
      

      我使用 Visual Studio Enterprise 2015 作为参考,但应该可以在其他版本中使用。

      【讨论】:

      • 谢谢。我以前用过 "sass": { "relativeUrls": false }
      【解决方案3】:

      我也遇到过这种情况。它曾经在早期版本的 Web Essentials 中存在问题,但最终得到了修复。现在它似乎在 2013 年又出现了。

      我见过的解决此问题的一种方法是转义 url 路径,这会导致 less 编译器将值视为字符串文字,它会按原样通过而不触及它。

      例如: 背景图片:~"url('../../../img/foo.png')";

      将发出: 背景图片:url('../../../img/foo.png');

      【讨论】:

        【解决方案4】:

        如果有人仍然遇到这种情况,请在您的 bundleconfig.json 中将 adjustRelativePaths 键添加到缩小选项中,如下所示:

        "minify": { "enabled": true, "adjustRelativePaths": false }

        这个key用在BundleHandler静态类here中,看方法AdjustRelativePaths

        【讨论】:

          【解决方案5】:

          我也使用 Web Essentials for LESS,虽然我还没有看到它这样做,但我为您提供了更好的解决方案。与其在代码中写出路径,尤其是如果您要更改的只是最后的文件名,不如尝试为路径使用变量。 示例:

          @imgURL: "../img";
          

          那么要使用它,你只需要:

          .footer{
          background: url("@{imgURL}/footer_background.svg");
          }
          

          【讨论】:

          • 是的,同意这种方法和一个不错的提示。然而,这不是实际问题的答案:) 无论如何谢谢
          【解决方案6】:

          我在使用 bootstrap 时遇到了同样的问题,它使用字体的相对路径。我认为问题在于node-sass 或 libsass。

          但是,我无法在任一库中找到有关相对路径重写的信息。如果可以修复,那么修复可能是放入新的 node-sass 版本。

          很遗憾,我找不到 WebEssentials 在我的系统上的安装位置来进行测试。

          我刚刚意识到您遇到了 LESS 编译器的问题,而不是 SASS。我想知道这个问题现在是否与 CSS minifier 有更多关系。

          我将“自定义输出目录”更改为“../”,这是我希望它写入的位置。这会导致重写。如果我将其留空,则相对路径将保持不变。

          【讨论】:

          • 是的,我认为这是Web基本选项中CSS下的“调整相对路径”设置的问题。我的临时解决方案是回到 VS2012,该设置有效:)
          • 如果我有更多时间,我会继续调查并回复您。我目前的解决方案是使用Prepros。免费版可以满足我的需要。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-05-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-31
          相关资源
          最近更新 更多