配置 grunt 复制任务以排除文件/文件夹
我已经安装了 grunt 任务 grunt-contrib-copy
.我将它嵌入到我的 Gruntfile.js
中并通过 grunt.loadNpmTasks('grunt-contrib-copy');
加载任务.
I have installed the grunt task grunt-contrib-copy
. I embedd it in my Gruntfile.js
and load the task via grunt.loadNpmTasks('grunt-contrib-copy');
.
目前我使用以下配置来创建一个包含我的 js 文件/文件夹子集的文件夹.
Currently I use following configuration to create a folder with a subset of my js files/folders.
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 时它都会退出并显示以下错误消息:
This works fine, but everytime I run grunt copy it exits with the following error message:
Copying Gruntfile.js -> output/Gruntfile.js
Warning: Error while processing "Gruntfile.js" file. Use --force to continue.
我想排除 Gruntfile.js
和 js/**/*
中的所有 *.less
文件.尝试使用 !(.less), !.less, !(*.less), !(./Grunfile.js), !(*Gruntfile.js)
...但没有任何效果.将其添加到 processContentExclude
数组中,但也没有成功.
I would like to exclude Gruntfile.js
and all *.less
files in js/**/*
. Tried it with !(.less), !.less, !(*.less), !(./Grunfile.js), !(*Gruntfile.js)
... But nothing works. Added it to the processContentExclude
array, but without success too.
那么如何排除 Gruntfile.js
和文件夹结构 js/**/*
中的所有较少文件?
So how can I exclude the Gruntfile.js
and all less files in the folder structure js/**/*
?
推荐答案
找到解决方案:
不需要这些行:
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/toolkit
.
because {expand: true, cwd: './', src: ['**'], dest: 'output/'}
is a new copy step, copying all files from ./
to output
. Which is for me not needed, because the above lines are already copying the required files to output/toolkit
.
所以以下两行代码完成了这项工作.不需要选项或其他任何东西.为了将 *.less
文件排除在外,'!**/*.less'
就可以了.
So the following two lines does the job. No need for options or anything else. To keep out the *.less
files '!**/*.less'
does the job.
files: [
{src: ['.conf1', '.conf2', 'config.js'], dest: 'output/toolkit/', filter: 'isFile'},
{src: ['css/**', 'img/**', 'js/**', 'release/**', 'lib/**', 'locale/**', '!**/*.less'], dest: 'output/toolkit/'}
]
相关文章