javascript - Gulp-clean-css编译后出现的url问题

查看:94
本文介绍了javascript - Gulp-clean-css编译后出现的url问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

使用gulp进行css压缩后出现一个问题,文件目录是这样的:

    static/
        src/
            images/
                header.png
            css/
                pages/
                    main.css
                    xxx.css
                import.css
        dist/
            

main.css中的的某个样式:

    .header-area {
        background: url('../../images/header.png')
    }

import.css:

   @import pages/main.css
   @import pages/xxx.css

现在进行gulp编译:

    gulp.task('minifycss', function(){
        gulp.src('src/css/**/*.css')
            .pipe(cleanCss())
            .pipe(concat(import.css))
            .pipe(gulp.dest('dist/css/'))
    })

现在存在的一个问题就是,编译后的css都在import.css中,这时url的路径正确的应该是
url('../images/header.png'),但现在还是('../../images/header.png'),找不到对应的图片资源。

后使用绝对路径,在src中url('/static/src/images/header.png'),但编译后url正确应为url('/static/dist/images/header.png')。

使用gulp-clean-css应如何把url正确切换过来呢?

谢谢。

解决方案

gulp-clean-css 只是一个 gulp 的插件,内部使用了clean-css,因此可以去 clean-css 项目主页找解决方案:

https://github.com/jakubpawlo...

正好在 How to process remote @imports correctly? 章节就有相关解决方案,看来是个常见问题啊。

In order to inline remote @import statements you need to provide a
callback to minify method as fetching remote assets is an asynchronous
operation, e.g.:

var source = '@import url(http://example.com/path/to/remote/styles);';
new CleanCSS({ inline: ['remote'] }).minify(source, function (error, output) {
  // output.styles
});

f you don't provide a callback, then remote @imports will be left as
is.

加一个参数:

{ inline: ['remote'] }

这篇关于javascript - Gulp-clean-css编译后出现的url问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆