【发布时间】:2015-07-31 22:59:06
【问题描述】:
我正在寻找与 Gulp 一起使用的插件链,它提供:
- 源地图支持
- 少
- 缩小
- 串联
- URL 替换(变基)以解决重定位/合并
我目前拥有前四个,但我找不到现有插件的组合也可以为我提供最后一个(URL 变基)。我没有找到任何发出源映射的 URL 变基插件。
需要明确的是,我的问题是,当我从项目开发文件夹中编译多个小 CSS 文件并将它们输出到一个公共文件夹中时,连接导致的移动会破坏相对 URL,例如背景图像的 URL。
编辑:
听起来我目前使用的工具链已经打算解决这个问题。所以,这表面上是答案。但是,这引发了另一个问题,即所需的语法应该如何工作。
这个问题理论上有很多重复的地方:
- clean-css #152: Rebasing functionality very frustrating
- clean-css #195:
rootoption on Windows - clean-css #263: How to get relativeTo option working with CSS files in different paths
- http://adilapapaya.com/docs/clean-css/#howtorebaserelativeimageurls
- Grunt cssmin rebasing a relative URI?
不幸的是,没有答案能真正解释语法,他们只是演示了伏都教;所以我不知道为什么以下不起作用。如果我能解决它,我会回到这里并标记它已接受,以表明此工具链确实可以满足我的需要。
源文件:
/assets
/site
styleInput1.less "url(../site/logo.png)"
logo.png
background.png
/application
styleInput2.less "url(../site/background.png)"
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'));
});
输出,带有损坏的 URL。注意多个缺陷。尽管 CSS 相对于所需资产提升了一个目录级别,但已添加了一个额外的父目录 (!)。此外,其中一个 URL 的硬资产文件夹名称已更改 (!)。很奇怪:
/compiled
styleOutput1.css "url(../../compiled/logo.png)"
styleOutput2.css "url(../../site/background.png)"
我很抱歉继续使用巫术,但这是我的工作中的吸管:
.pipe(minifyCss({ relativeTo: './compiled', target: './compiled' }))
以及正确的输出:
/compiled
styleOutput1.css "url(../assets/site/logo.png)"
styleOutput2.css "url(../assets/site/background.png)"
【问题讨论】:
标签: css gulp gulp-sourcemaps clean-css