将大量文件(图像,pdf等)从一个目录复制到另一个目录时出现问题。在目标文件夹中,所有这些文件都已损坏。 我尝试使用noProcess和processContentExclude选项,但没有带来任何结果。
我的副本任务配置如下所示:
copy: {
assets_images: {
options: {
noProcess: ['**/*.{png,gif,jpg,ico,pdf}']
},
expand: true,
cwd: 'static/images/',
src: '**',
dest: 'dist/assets/images/'
},
assets_data: {
options: {
noProcess: ['**/*.{png,gif,jpg,ico,pdf}']
},
expand: true,
cwd: 'static/data/',
src: '**',
dest: 'dist/assets/data/'
}
}
你能帮帮我吗?
更新
我做了一些调查,发现源文件夹和destionation文件夹中的png文件的二进制代码不同。
我怀疑使用错误编码复制任务进程文件(默认情况下是utf8)。据我所知,它将它们作为二进制文件处理,在这种情况下utf8不是正确的编码。
你想建议怎么做才能解决这个问题?
答案 0 :(得分:3)
选项名称为processContentExclude
,除非您使用的是0.5.0
或更高版本,根据https://github.com/gruntjs/grunt-contrib-copy#release-history更改为noProcess
您可以通过以下方式检查您的版本:
npm ls grunt-contrib-copy
来自grunt-vtex的大型复制配置示例:
copy:
main:
files: [
expand: true
cwd: 'src/'
src: ['**'].concat(options.copyIgnore)
dest: "build/<%= relativePath %>/"
]
deploy:
files: [
expand: true
cwd: "build/<%= relativePath %>/"
src: ['**']
dest: "#{pkg.deploy}/#{pkg.version}"
]
options:
processContentExclude: ['**/*.{png,gif,jpg,ico,psd,ttf,otf,woff,svg}']
process: (src, srcpath) ->
replaceFiles = grunt.config('deployReplaceFiles') ? grunt.config('deployReplaceFiles', glob.sync(options.replaceGlob))
for file in replaceFiles when file.indexOf(srcpath) >= 0
log "Replacing file...", file
for k, v of options.replaceMap
log "Replacing key", k, "with value", v
src = src.replace(new RegExp(k, 'g'), v)
return src
noProcess
将无济于事。
如果是这样,您应该查看encoding
选项。 https://github.com/gruntjs/grunt-contrib-copy#encoding
也许请尝试encoding: null
,如下所示:https://github.com/gruntjs/grunt-contrib-copy/issues/64
以最小的方式尝试并重现您的问题 - 创建只有一个任务的Gruntfile,只复制一个图像。这不是一个常见的问题,也许其他一些任务是罪魁祸首。