Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

使用 -o 参数时,提示 error: Not a PNG file #4

Open
thethreeonee opened this issue Nov 29, 2014 · 5 comments
Open

使用 -o 参数时,提示 error: Not a PNG file #4

thethreeonee opened this issue Nov 29, 2014 · 5 comments

Comments

@thethreeonee
Copy link

你好,我在使用的时候加上了 -o 参数,完整的命令:

rsd release -omwd ../server

然后会有一个提示:

δ 48ms

 Ω ...................................  error: Not a PNG file
  error: rwpng_read_image() error 25
File: stdin.png
....................................................................................................... 14805ms

我的项目里根本没有 stdin.png 这个文件也没有引用,不知道是怎么回事

@fouber
Copy link
Owner

fouber commented Nov 29, 2014

@celtavonce

应该是有这个文件的,你可以在命令后面加上 --verbose 参数看一下更详细的信息,

rsd release -omwd ../server --verbose

@thethreeonee
Copy link
Author

查了,是某个用 png 压缩器压缩过的 png 文件,再压缩的时候报的错,但是其他压缩过的文件却没报错。同时,fis-conf.js 里所有 png 文件不优化的选项会报错:

[ERROR] unreleasable file [/Path/To/image.png] in [/Path/To/style.scss]
fis.config.merge({
  modules : {
    parser : {
      coffee : 'coffee-script',
      less : ['less'],
      md : 'marked',
      scss : 'compass',
      sass : 'compass'
    }
  },
  roadmap : {
    ext : {
      less : 'css',
      coffee : 'js',
      md : 'html',
      scss : 'css',
      sass : 'css'
    },
    path: [
      {
        reg: "lib/**.js",
        useOptimizer: false
      },
      {
        reg: "**.html",
        useOptimizer: false
      },
      {
        reg : "**.png",
        useOptimizer: false
      }
    ]
  }
});

@fouber
Copy link
Owner

fouber commented Nov 29, 2014

[ERROR] unreleasable file [/Path/To/image.png] in [/Path/To/style.scss]

这句话的意思是 “在style.scss里使用了不可发布的文件image.png”,你的配置文件肯定不是下面填写的这点,应该有某个roadmap.path中的配置项设置了 release: false,而这个配置项的reg命中了你的这个image.png图片,所以这个文件变成了不可发布文件,不可发布文件只能用于内嵌,不能用于资源定位,因为它没有被发布出来,没有url。

fis的roadmap.path是一个数组,从0项开始,用每一项的reg匹配完整的文件路径,命中了哪个文件就停止匹配,忽略后面的选项。

比如:

fis.config.set('roadmap.path', [
    {
        reg: '**.png',
        release: false
    },
    {
        reg: 'lib/**.png',    //=> 前一条规则已经命中了所有图片,这里将不会生效。
        release: 'image/$&'
    }
]);

出现 unreleasable 错误一定是因为配置了release: false但又用url去引用资源导致的矛盾。

而关于图片报错,是因为fis的压缩器不能再识别某些数据不规范的图片格式导致的,这两个问题不是同一个问题。

@thethreeonee
Copy link
Author

@fouber
真没有 release: false 的设置。
完整的 fis-conf.js:

fis.config.merge({
  project : {
    md5Length: 10,
    exclude : /\/images\/emoji\//i
  },
  modules : {
    parser : {
      coffee : 'coffee-script',
      less : ['less'],
      md : 'marked',
      scss : 'compass',
      sass : 'compass'
    }
  },
  roadmap : {
    domain: [ 'http://mobokstatic.qiniudn.com' ],
    ext : {
      less : 'css',
      coffee : 'js',
      md : 'html',
      scss : 'css',
      sass : 'css'
    },
    path: [
    {
      reg: "lib/**.js",
      useOptimizer: false
    },
    {
      reg: "**.html",
      useOptimizer: false
    },
    {
      reg: "**.png",
      useOptimizer: false
    }
    ]
  },
  deploy : {
    local : {
      to : '../server'
    }
  }
});

错误信息:

[ERROR] unreleasable file [/Users/MiincGu/web/public/img/select3.png] in [/public/css/storycategory.scss]

@fouber
Copy link
Owner

fouber commented Nov 30, 2014

如果可以的话,麻烦把你的项目精简一下提交到github上,让我看一下

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants