【问题标题】:How to enable Stylus url() rewrites如何启用 Stylus url() 重写
【发布时间】:2013-08-09 05:56:53
【问题描述】:

我正在尝试让手写笔网址正常工作。我想将url('/path/to/img.png') 转换为base64 编码形式。

我正在尝试遵循文档 here,但这对我没有多大帮助。

我尝试添加 require 位和示例函数,导入 url,但不知道如何启用这个东西。

如何让它工作?

更新:

尝试使用grunt-image-embed插件。

这是我的 grunt 配置:

imageEmbed: {
  dist: {
    src: [ "./public/local/css/images.css" ],
    dest: "./public/prod/css/images.css",
    options: {
      deleteAfterEncoding : false
    }
  }
},

并且css包含:

#footer-social .youtube {
  width: 18px;
  background-image: url('/img/youtube-icon.png');
}

产生错误的原因:

Warning: File C:\path\...\grunt-image-embed\tasks\lib\img\youtube-icon.png
does not exist Use --force to continue.

如果我删除 background-image 行,一切都会正常运行。我无法修改 css 中的路径,因为在 local 我们使用实际图像的相对路径。

【问题讨论】:

    标签: javascript css gruntjs stylus


    【解决方案1】:

    试试这个:

    function compile(str, path) {
      return stylus(str)
                .define('url', stylus.url({
                  paths : [__dirname + '/public'],
                  limit : 10000
                }));
    }
    

    从这里开始:

    http://bengourley.co.uk/using-stylus
    

    这里对我有用:

    https://github.com/MichaelJCole/wintersmith-stylus/blob/master/plugin.coffee
    

    是coffeescript,有趣的是:

          stylus(@_text, options)
          .use(nib())
          .define('url', stylus.url(
            paths : [__dirname + '/public']
            limit : locals.inlineSpriteMaxBytes || 0 ) )
          .render (err, css) ->
            if err
              callback err
            else
              callback null, new Buffer css
    

    【讨论】:

      【解决方案2】:

      我不知道它是怎么变成没有手写笔的,但你可以用这个[1]:http://docs.emmet.io/actions/base64/

      【讨论】:

        【解决方案3】:

        我想你会发现这个 grunt 插件正是你所需要的; grunt image embed。适用于图像和字体。来自文档:

        grunt.initConfig({
          imageEmbed: {
            dist: {
              src: [ "css/styles.css" ],
              dest: "css/output.css",
              options: {
                deleteAfterEncoding : false
              }
            }
          }
        });
        

        【讨论】:

        • 为什么要从节点文件夹加载图像? Running "imageEmbed:dist" (imageEmbed) task Warning: File C:\...\node_modules\grunt-image-embed\tasks\lib\img\audio.png does not exist Use --force to continue.
        • 我的路径是这样的:.audio{background-image:url('/img/audio.png')}
        • 能否将您的配置粘贴到 pastebin 或类似文件中,以便我查看?
        • 抱歉回复晚了,我用示例配置更新了原始问题。
        • 好的,好的。我可以复制问题中的问题。基本上,前面的斜线是把整个事情都扔掉了,只需删除它(或在前面加上一个 . ,这样你的路径就会显示为./img/audio.png),你会很高兴的。 :-)
        猜你喜欢
        • 2014-09-09
        • 2014-10-01
        • 1970-01-01
        • 2015-01-30
        • 1970-01-01
        • 1970-01-01
        • 2013-01-08
        • 2016-11-28
        • 1970-01-01
        相关资源
        最近更新 更多