将很多文件(图像,pdf等)从一个目录复制到另一个目录时,我遇到了问题.在目标文件夹中,所有这些文件都已损坏. 我试图使用noProcess和processContentExclude选项,但它没有带来任何结果. 我的副
我试图使用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不是正确的编码.
你想建议怎么做才能解决这个问题?
如果你有一个过程功能选项名称为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将无法提供帮助.
如果是这样,你应该看看编码选项. https://github.com/gruntjs/grunt-contrib-copy#encoding
也许尝试编码:null,如下所示:https://github.com/gruntjs/grunt-contrib-copy/issues/64
无论哪种方式
尝试以最小的方式重现您的问题 – 创建一个只有一个任务的Gruntfile,只复制一个图像.这不是一个常见的问题,也许其他一些任务是罪魁祸首.