相关疑难解决方法(0)

usemin并使用Grunt重写供应商CSS文件中的图像URL

grunt-usemin帮我改造

<link href="/dependencies/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet" />
<link href="/dependencies/nanoscroller/bin/css/nanoscroller.css" rel="stylesheet" />
<link href="/dependencies/dropzone/downloads/css/dropzone.css" rel="stylesheet" />
Run Code Online (Sandbox Code Playgroud)

一个完美的组合和缩小的js:

<link href="scripts/8e1991c7.libraries.js" rel="stylesheet" />
Run Code Online (Sandbox Code Playgroud)

在concat,cssmin和uglify之后,我有一个几乎完美的文件夹结构,除了图像和它们的位置.

这是我的问题:

所有这些供应商的css文件都包含图像位置.不好的是,他们所有人都在分享不同类型的地点.他们中的一些人在css文件夹中使用图像,而其他人在img文件夹中使用.

如何配置grunt usemin来重写所有图片网址?

gruntjs yeoman grunt-usemin

15
推荐指数
4
解决办法
1万
查看次数

CSS和Grunt缩小中的相对路径?

在我提出这个问题之前,我想指出在StackOverflow上发布几个 类似的 问题 ,但它们都没有为问题提供准确的解决方案.


问题

我有一个工作流程设置,Grunt将多个css文件组合并缩小为一个文件,用于生产环境.

我面临的问题是,在运行Grunt之后,字体和图像路径会中断,因为它们仍指向现有的相对文件路径.

举个例子:

static/homepage/startup/common-files/css/icon-font.css我有以下的CSS规则:

@font-face{font-family:Flat-UI-Icons;src:url(../fonts/Startup-Icons.eot);
Run Code Online (Sandbox Code Playgroud)

在我的Gruntfile中,我指定我希望缩小的css文件的输出style.min.css位于static/css/custom/homepage/.这样做的问题是文件路径发生变化,导致无法再找到所有字体和图像依赖关系,并在浏览器中返回404状态.

我做了什么来尝试解决这个问题

我认为有两种方法可以解决这个问题:

  1. 复制所有相关文件,使它们相对于style.min.css所在的新目录.这样做的缺点是它可能很快变得混乱并破坏我的项目文件夹结构!
  2. 手动更改路径.但话说回来,这有什么意义呢?Grunt专为自动化任务而设计!

有人知道如何解决这个问题吗?我浪费了将近10个小时,我开始放弃了.人们声称已经在Github问题页面修复了这个问题,但是没有人真正说明他们是如何修复它的.

编辑:

我查看了clean-css库源代码,看起来你可以将relativeTo属性传递给minifier对象.我已经弄得一团糟,但我仍然被卡住了.如果我对此有所了解,我会报告回来.

编辑:

好吧,我终于找到了一些解释什么relativeTo(和其他)属性的文档.我仍然坚持我的文件结构应该是什么配置....

relativeTo - path to resolve relative @import rules and URLs
root - path to resolve absolute @import rules and rebase relative URLs
roundingPrecision - rounding precision; defaults to 2; -1 disables rounding
target - path to a folder or …
Run Code Online (Sandbox Code Playgroud)

css relative-path minify gruntjs grunt-contrib-concat

14
推荐指数
1
解决办法
4491
查看次数

使用Gulp连接/重定位CSS文件

我正在寻找一个与Gulp一起使用的插件链,它提供:

  • 源地图支持
  • 缩小
  • 级联
  • 用于解决重定位/连接的URL替换(rebase)

我目前有前四个,但我找不到现有插件的组合,它也会给我最后一个(URL rebasing).我没有找到任何发布源映射的URL rebasing插件.

为了清楚起见,我的问题是,当我从项目开发文件夹中编译多个小CSS文件并将它们输出到公共文件夹时,连接产生的移动会破坏相对URL,例如背景图像.

EDITS:

听起来我目前使用的工具链已经打算解决这个问题.所以,这表面上是答案.但是,这引发了另一个问题,即所需语法应该如何工作.

这个问题在理论上有很多重复:

不幸的是,没有答案实际解释语法,他们只是展示伏都教; 所以我不知道为什么以下不起作用.如果我能解决它,我会回到这里并标记这个被接受,表明这个工具链确实做了我需要的.

源文件:

/assets
    /site
        styleInput1.less "url(../site/logo.png)"
        logo.png
        background.png
    /application
        styleInput2.less "url(../site/background.png)"
Run Code Online (Sandbox Code Playgroud)

gulp任务:

gulp.task(filename, function () {
    return gulp.src(files)
        .pipe(sourcemaps.init())
        .pipe(less())
        .pipe(minifyCss({ relativeTo: './compiled' }))
        .pipe(concat(filename))
        .pipe(sourcemaps.write('.'))
        .pipe(gulp.dest('./compiled'));
});
Run Code Online (Sandbox Code Playgroud)

输出,URL损坏.注意多个缺陷.虽然CSS是相对于所需资产引发的目录级别,但已添加了一个额外的父目录(!).此外,其中一个URL已更改硬资产文件夹名称(!).很奇怪:

/compiled
    styleOutput1.css "url(../../compiled/logo.png)"
    styleOutput2.css "url(../../site/background.png)"
Run Code Online (Sandbox Code Playgroud)

我为继续伏都教道歉,但这是我的工作管道:

.pipe(minifyCss({ relativeTo: './compiled', target: './compiled' }))
Run Code Online (Sandbox Code Playgroud)

而正确的输出:

/compiled
    styleOutput1.css "url(../assets/site/logo.png)"
    styleOutput2.css "url(../assets/site/background.png)"
Run Code Online (Sandbox Code Playgroud)

css gulp gulp-sourcemaps clean-css

8
推荐指数
1
解决办法
3107
查看次数