Gruntjs 使用grunt contrib copy的损坏副本
我在将大量文件(图像、pdf等)从一个目录复制到另一个目录时遇到问题。在目标文件夹中,所有这些文件都已损坏。 我尝试使用noProcess和processContentExclude选项,但没有结果 我的复制任务配置如下所示:Gruntjs 使用grunt contrib copy的损坏副本,gruntjs,grunt-contrib-copy,Gruntjs,Grunt Contrib Copy,我在将大量文件(图像、pdf等)从一个目录复制到另一个目录时遇到问题。在目标文件夹中,所有这些文件都已损坏。 我尝试使用noProcess和processContentExclude选项,但没有结果 我的复制任务配置如下所示: copy: { assets_images: { options: { noProcess: ['**/*.{png,gif,jpg,ico,pdf}'] }, expand: true, cwd: 'static/imag
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/'
}
}
你能帮我做这个吗
更新:
我做了一些调查,发现源文件夹和目标文件夹中png文件的二进制代码不同
我怀疑复制任务进程文件使用了错误的编码(默认为utf8)。据我所知,它将它们作为二进制文件处理,在这种情况下,utf8不是正确的编码
如果您有流程功能,您建议如何解决此问题?
选项名称为processContentExclude
,除非您使用的是0.5.0
或更高版本,其中根据
您可以通过以下方式检查您的版本:
npm ls grunt-contrib-copy
大型副本配置示例来自:
复制:
主要内容:
档案:[
扩展:正确
cwd:'src/'
src:['**'].concat(options.copyIgnore)
dest:“构建/”
]
部署:
档案:[
扩展:正确
cwd:“构建/”
src:['**']
dest:“#{pkg.deploy}/#{pkg.version}”
]
选项:
processContentExclude:['**.{png、gif、jpg、ico、psd、ttf、otf、woff、svg}']
进程:(src,srcpath)->
replaceFiles=grunt.config('deployReplaceFiles')?grunt.config('deployReplaceFiles',glob.sync(options.replaceGlob))
当file.indexOf(srcpath)>=0时,用于替换文件中的文件
记录“替换文件…”,文件
对于选项的k,v.replaceMap
记录“替换键”,k,“带值”,v
src=src.replace(新的RegExp(k,'g'),v)
返回src
如果您没有流程功能
noProcess
如果您没有流程功能,则不会有任何帮助
如果是这样,您应该查看编码
选项
可以尝试编码:null
,如下所示:
无论如何
尝试以最小的方式重现您的问题-创建一个仅包含一个任务的GrunFile,只复制一个图像。这不是常见的问题,可能是其他任务造成的。您想做什么?是否排除具有这些扩展名的文件?这有什么意义吗:?由于复制后文件已损坏,我在选项中添加了noProcess以跳过对这些文件的处理。因此,我希望文件将成功地复制而不进行修改,不会被破坏。这是正确的方法吗?为什么文件在复制后仍然损坏?
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