Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Grunt Contrib Copy,如何在不覆盖dest folder中现有文件/文件夹的情况下复制目录内容,保持相同的文件夹结构?_Javascript_Gruntjs_Grunt Contrib Copy - Fatal编程技术网

Javascript Grunt Contrib Copy,如何在不覆盖dest folder中现有文件/文件夹的情况下复制目录内容,保持相同的文件夹结构?

Javascript Grunt Contrib Copy,如何在不覆盖dest folder中现有文件/文件夹的情况下复制目录内容,保持相同的文件夹结构?,javascript,gruntjs,grunt-contrib-copy,Javascript,Gruntjs,Grunt Contrib Copy,源结构 ``` 文件夹 运行复制任务之前的目标结构 ``` 文件夹 我需要目标文件夹与src folder完全相同,但我不想覆盖现有文件,如上面示例中的a.js和e.js已经存在,因此不应触碰它们,应创建其他文件/文件夹,因此我希望递归检查“folder”中是否存在文件,如果不存在,则复制它。我一直在使用以下过滤器不覆盖单个文件 filter:function(filepath){return!(grunt.file.exists('dest'));}but'文件夹由多个子目录和文件组成,因此不

源结构 ``` 文件夹

运行复制任务之前的目标结构 ``` 文件夹

我需要目标文件夹与src folder完全相同,但我不想覆盖现有文件,如上面示例中的a.js和e.js已经存在,因此不应触碰它们,应创建其他文件/文件夹,因此我希望递归检查“folder”中是否存在文件,如果不存在,则复制它。我一直在使用以下过滤器不覆盖单个文件
filter:function(filepath){return!(grunt.file.exists('dest'));}but'文件夹由多个子目录和文件组成,因此不可能为每个文件编写。请帮助编写可执行此操作的自定义grunt任务。

这可以通过在目标的
过滤器
函数中添加自定义逻辑来实现,以执行以下操作:

  • 利用nodejs模块帮助确定结果路径
  • 通过使用确定文件是否已存在于其目标路径
  • 以下GIST演示了如何跨平台实现您的需求:

    grunfile.js

    module.exports=函数(grunt){
    "严格使用",;
    var path=require('path');//加载其他内置节点模块。
    grunt.loadNpmTasks('grunt-contrib-copy');
    grunt.initConfig({
    副本:{
    不存在的:{
    是的,
    cwd:'src/'//
    
    |----Sub-Folder-1
    |    |-a.js
    |    |-b.js
    |----Sub-Folder-2
    |    |-c.js
    |-d.js
    |-e.js
    ```
    
    |----Sub-Folder-1
    |    |-a.js
    |-e.js
    ```