28

TL;DRIItemTransform当缩小文件已存在于与原始(非缩小)文件相同的文件夹中时,不会执行。

问题说明

我遇到这个问题主要是因为 CSS 相关图像引用。如果您使用IItemTransformJavascript 文件,则同样适用。

这就是我正在使用的:

  1. 我正在使用带有 Web Essentials 插件的 Visual Studio 来支持 LESS 文件
  2. 我正在编写 LESS 文件并让 Web Essentials 插件在保存时自动缩小文件
  3. 我也在我的项目中使用捆绑和缩小
  4. 在创建 CSS 包时,我CssRewriteUrlTransform用来使 CSS URL 成为绝对的(即背景图像),以便在将多个 CSS 文件捆绑在一起后图像仍然可以工作

到目前为止,这里没有什么异常,但它不起作用。

似乎是什么问题?

捆绑和缩小的工作方式是尽量避免过度处理。这意味着当缩小文件与原始文件存在于同一文件夹中时,它不会运行自己的缩小文件,而是提供现有文件。

只要它至少对那些预先存在的缩小文件运行转换,就可以了。但事实并非如此。所以我最终得到了一个捆绑包中的相对 URL,这几乎破坏了所有这些资源。

解决方法

  1. 始终在 LESS 文件中提供绝对路径
  2. 在 Web Essentials 设置中禁用保存文件缩小
  3. 定义我的包时请参考缩小文件,因为它们没有缩小版本(*.min.css 没有 *.min.min.css),所以缩小器实际上会拾取文件并缩小,同时还运行转换它。

从我的开发过程和使用的工具(以及它们的配置方式)的角度来看,这看起来像是一个错误。如果这些文件是同一缩小过程的结果,那么这根本不是一个错误,因为在执行缩小时会执行转换。确实,此类功能不存在,而且可能永远不会存在,因为应用程序需要写入权限才能使其工作。结果:这是一个错误。现有的缩小文件应在缓存之前通过转换进行处理。

问题

是否有可能以某种方式说服捆绑和缩小:

  1. 不使用现有的缩小文件版本
  2. 在现有的缩小版本上运行转换
4

2 回答 2

1

你考虑过使用 Grunt 吗? http://gruntjs.com/

它有一个学习曲线,但是,信息库是巨大的。您在使用 Web Essentials 时遇到的问题不会是 grunt 的问题。

我现在在 VS 中使用它来缩小、捆绑和转换 css 和 javascript 以及将文件重新组织到部署目录中。一旦你建立了一个目录结构,一个 grunt 文件就可以很容易地被重用。

使用 VS 中的附加组件(链接,如下),您可以右键单击 grunt 文件并从弹出菜单中选择要运行的 grunt 任务。

https://visualstudiogallery.msdn.microsoft.com/dcbc5325-79ef-4b72-960e-0a51ee33a0ff

可以通过下载各种插件(即https://www.npmjs.com/package/grunt-contrib-less )来创建所谓的 Grunt “任务” 。

于 2015-03-19T21:07:55.683 回答
0

我从来没有使用过 LESS 或网络必需品,所以请看这篇文章的价值(不多。)你能否添加一个预构建命令来简单地删除旧文件,然后在需要更新 CSS 时进行重建.

于 2014-12-18T17:04:22.607 回答