首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >配置grunt复制任务以排除文件/文件夹

配置grunt复制任务以排除文件/文件夹
EN

Stack Overflow用户
提问于 2013-03-04 18:12:11
回答 5查看 45.9K关注 0票数 39

我已经安装了grunt任务grunt-contrib-copy。我将它嵌入到我的Gruntfile.js中,并通过grunt.loadNpmTasks('grunt-contrib-copy');加载任务。

目前,我使用以下配置来创建一个包含js文件/文件夹子集的文件夹。

代码语言:javascript
复制
copy: {
            options: {
                processContent: [],
                processContentExclude: ['build/**', 'bin/**', '.*', '*.orig', '*.bak', '.*/**', '*.log', 'dist/**', 'test/**', 'dev/**', 'pyserver/**', 'node_modules/**', 'doc/**']
            },
            du: {
                files: [ 
                    {src: ['.conf1', '.conf2', './config.js'], dest: 'output/toolkit/', filter: 'isFile'},
                    {src: ['./css/**/*', './img/**/*', './js/**/*', './release/**/*', './lib/**/*', './locale/**/*'], dest: 'output/toolkit/'},
                    {expand: true, cwd: './', src: ['**'], dest: 'output/'}
                ]
            }
        }

这工作得很好,但每次我运行grunt copy时,它都会退出,并显示以下错误消息:

代码语言:javascript
复制
Copying Gruntfile.js -> output/Gruntfile.js
Warning: Error while processing "Gruntfile.js" file. Use --force to continue.

我想在js/**/*中排除Gruntfile.js和所有*.less文件。用!(.less), !.less, !(*.less), !(./Grunfile.js), !(*Gruntfile.js)试过了..。但是什么都不起作用。已将其添加到processContentExclude数组,但也未成功。

那么,如何排除文件夹结构js/**/*中的Gruntfile.js和所有less文件呢

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-03-05 19:23:17

找到解决方案:

不需要这些行:

代码语言:javascript
复制
files: [ 
          {src: ['.conf1', '.conf2', './config.js'], dest: 'output/toolkit/', filter: 'isFile'},
          {src: ['./css/**/*', './img/**/*', './js/**/*', './release/**/*', './lib/**/*', './locale/**/*'], dest: 'output/toolkit/'},
          {expand: true, cwd: './', src: ['**'], dest: 'output/'}
       ]

因为{expand: true, cwd: './', src: ['**'], dest: 'output/'}是一个新的复制步骤,所以会将所有文件从./复制到output。这对我来说是不必要的,因为上面的代码行已经将所需的文件复制到output/toolkit

因此,以下两行代码可以完成此工作。不需要选择或其他任何东西。为了防止*.less文件,'!**/*.less'完成了这项工作。

代码语言:javascript
复制
files: [ 
          {src: ['.conf1', '.conf2', 'config.js'], dest: 'output/toolkit/', filter: 'isFile'},
          {src: ['css/**', 'img/**', 'js/**', 'release/**', 'lib/**', 'locale/**', '!**/*.less'], dest: 'output/toolkit/'}
       ]
票数 57
EN

Stack Overflow用户

发布于 2015-02-02 20:31:19

我想排除副本中的所有.gz文件,此选项适用于所有文件夹

代码语言:javascript
复制
{
  expand: true,
  cwd:    './build/www/',
  src:    [ '**', '!**/*.gz' ],
  dest:   './mydDest'
}

所以可以尝试!**/*.less, !gruntfile.js (无括号)

票数 15
EN

Stack Overflow用户

发布于 2013-07-29 16:28:44

如果您有权更改为不同的Grunt任务:

还有一个https://github.com/clavery/grunt-copy-to,它有一个显式的“忽略”选项来指定要忽略的文件和目录。Github中的自述文件显示了一个包含忽略选项的示例配置。

它的工作原理与常规副本略有不同,因为它遵循修改时间。但这实际上可能是受欢迎的(在我的例子中)。

从自述文件中:

类似于grunt contrib-copy,但只复制较新的文件,并维护已复制文件的修改时间。对于创建可在以后使用依赖于文件修改时间的工具进行同步的生成目录很有用。

(我只是该项目的用户(至少到目前为止)。)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15199092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档