gpt4 book ai didi

css - Gulp 任务 : CleanCSS and Paths

转载 作者:行者123 更新时间:2023-11-28 16:03:16 25 4
gpt4 key购买 nike

我用 Gulp 创建了一个任务,它应该:

  1. 加入多个CSS文件;
  2. 精简 + 删除不必要的 CSS;
  3. 修复 url() 指令和其他指令的路径;
  4. 生成源 map ;

我目前的代码是:

var gulp = require("gulp"),
concat = require("gulp-concat"),
cleanCSS = require("gulp-clean-css"),
sourcemaps = require("gulp-sourcemaps");

var styleList = [
"Resources/Include/ionicons/css/ionicons.css",
"Resources/base.css",
"Resources/extra.css",
];

gulp.task("deploy-css", function() {
gulp.src(styleList)
.pipe(sourcemaps.init())
.pipe(concat("style.min.css"))
.pipe(cleanCSS({
debug: true,
compatibility: "ie8",
keepSpecialComments : 0,
target: "Resources/",
relativeTo: "Resources/"
})
)
.pipe(sourcemaps.write())
.pipe(gulp.dest("Resources/"))
});

url() 路径示例,取自文件 Resources/Include/ionicons/css/ionicons.css:

@font-face { font-family: "Ionicons"; src: url("../fonts/ionicons.eot?v=2.0.0");

这是我当前的文件结构:

./Resources/style.min.css // -> Final processed file
./Resources/base.css
./Resources/extras.css
./Resources/Include/ // -> Original CSS files with URL (installed via Bower)

测试文件夹:https://dl.dropboxusercontent.com/u/2333896/gulp-path-test.zip (使用 gulp deploy-css 安装然后运行)。

除了 CSS 文件使用 url() 选项包含对图像或字体的引用时,几乎一切都按预期工作。运行任务(并创建 style.min.css)后,这些引用被破坏 - 原始 CSS 文件中的路径未发生任何变化。

难道 cleanCSS 不应该检查引用文件的位置并自动修复路径吗? targetrelativeTo 选项不是用来控制它的吗?

我该如何解决这个问题?谢谢。

最佳答案

我设法解决了这个问题,我的主要问题是错位的 concat 操作破坏了 gulp-clean-css rebase 功能和错误的 targetrelativeTo 选项。显然我对以前的工作流程没有考虑太多。

var gulp = require("gulp"),
concat = require("gulp-concat"),
cleanCSS = require("gulp-clean-css"),
sourcemaps = require("gulp-sourcemaps");

var styleList = [
"Resources/Include/ionicons/css/ionicons.css",
"Resources/base.css",
"Resources/extra.css",
"Resources/Include/teste/base.css"
];

gulp.task("deploy-css", function() {
gulp.src(styleList)
.pipe(sourcemaps.init())
.pipe(cleanCSS({
compatibility: "ie8",
keepSpecialComments : 0,
target: "Resources",
relativeTo: ""
})
)
.pipe(concat("style.min.css", {newLine: ""}))
.pipe(sourcemaps.write())
.pipe(gulp.dest("Resources"))
});

这个新的工作流程是:

  1. 优化所有单个 CSS 文件 - 包括 rebase url;
  2. 将各个优​​化文件联系到最终文件中——(注意 newLine: "" 避免文件中的换行符);
  3. 编写文件。

关于css - Gulp 任务 : CleanCSS and Paths,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39683068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com