configurationgrunt复制任务以排除文件/文件夹
我已经安装了grunt任务grunt-contrib-copy
。 我将它Gruntfile.js
到我的Gruntfile.js
并通过grunt.loadNpmTasks('grunt-contrib-copy');
加载任务grunt.loadNpmTasks('grunt-contrib-copy');
。
目前我使用以下configuration来创build一个文件夹与我的js文件/文件夹的子集。
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/'} ] } }
这工作正常,但每次运行咕噜复制退出时出现以下错误信息:
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
和全部文件?
find解决办法:
这些线路不需要:
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
。
所以下面两行就是这个工作。 无需select或其他任何东西。 为了避免*.less
文件'!**/*.less'
*.less
'!**/*.less'
做这个工作。
files: [ {src: ['.conf1', '.conf2', 'config.js'], dest: 'output/toolkit/', filter: 'isFile'}, {src: ['css/**', 'img/**', 'js/**', 'release/**', 'lib/**', 'locale/**', '!**/*.less'], dest: 'output/toolkit/'} ]
我想排除在我的副本中的所有.gz文件,这个选项做了所有文件夹的工作
{ expand: true, cwd: './build/www/', src: [ '**', '!**/*.gz' ], dest: './mydDest' }
所以可能会试试!**/*.less, !gruntfile.js
(no parens)
如果你有自由去改变一个不同的Grunt任务:
还有https://github.com/clavery/grunt-copy-to ,它有一个明确的“忽略”选项来指定要省略的文件和目录。 Github中的README显示了一个包含忽略选项的示例configuration。
它与正常的副本有点不同,因为它支持修改时间。 但是,这可能真的很受欢迎(这是我的情况)。
从自述文件:
像grunt-contrib-copy一样,只复制较新的文件,并保留复制文件的修改时间。 用于创build构build目录,以后可以使用依赖文件修改时间的工具同步。
(我只是该项目的用户(至less目前为止))。
假设“Gruntfile.js”位于根目录下,复制选项中的最后一行将其configuration为将根目录中的所有内容复制到“output /”。
如果是这样,请将'!Gruntfile.js'添加到您的src文件path数组中。
{ expand: true, cwd: './', src: ['**'], // ex. src: ['**', '!Gruntfile.js'], dest: 'output/' }
从这个线程和原始线程请参考这些解决scheme
我认为这应该做到这一点。 不需要/**/*
。 /**
覆盖path及其子目录中的所有文件
{src: ['./css/**', './img/**', './js/**', './release/**', './lib/**', './locale/**'], dest: 'output/toolkit/'}, {expand: true, cwd: './', src: ['**'], dest: 'output/'}