我是grunt的新手,对于我的项目,我正在使用grunt-contrib-copy插件。我的文件夹结构是:
module.exports = function(grunt){
const sass = require('node-sass');
require('load-grunt-tasks')(grunt);
grunt.initConfig({
sass: {
options: {
implementation: sass,
},
dist: {
files: [{
expand: true,
cwd: 'sass',
src: ['*.scss'],
dest: 'assets/css',
ext: '.css'
}]
}
},
cssmin: {
target: {
files: [{
expand: true,
cwd: 'assets/css',
src: ['*.css', '!*.min.css'],
dest: 'build/assets/css',
ext: '.min.css'
}]
}
},
copy:{
html:{
files:[{
expand:true,
dot:true,
cwd:'components',
src:['**/*.html'],
dest:'build/'
}]
}
}
});
grunt.registerTask('default', ['sass','cssmin','copy']);
}
我想将index.html和components文件夹复制到build文件夹,但是我无法对其进行配置。我能够复制index.html文件或仅复制组件文件夹,但无法复制两者。有人可以帮我吗这将有极大的帮助。提前谢谢。
答案 0 :(得分:0)
有几种方法可以实现这一目标。
将您的copy
任务配置为以下一项。您可能可能只需要遵循解决方案A 。
注意:解决方案A 和 B 均达到相同的结果。 解决方案C 的结果略有不同:
解决方案A
使用一个名为html
的{{3}},您可以执行以下操作:
copy:{
html:{
files:[{
src:['components/**', 'index.html'],
dest:'build/'
}]
}
}
注意:在读取src
的第一项上方的'components/**'
数组中,使用了target(即**
部分)。这意味着包括components
文件夹中的所有项目,并包括所有子文件夹,这些子文件夹在复制时会深一些级别。
解决方案B
或者,使用两个目标;一个名为html
,另一个名为components
,您可以这样做:
copy:{
html:{
files:[{
src:'index.html',
dest:'build/'
}]
},
components:{
files:[{
src:'components/**',
dest:'build/'
}]
}
}
这与解决方案A 非常相似,但是它使用两个目标而不是一个目标,这可能更合适,因为目标名称实际上表明了它们在复制什么。
解决方案C
但是,如果您实际上不希望将components
文件夹复制到build
,而是只希望复制components
文件夹的内容,则可以执行此操作:
copy:{
html:{
files:[{
src:'index.html',
dest:'build/'
}]
},
components:{
files:[{
expand:true,
cwd: 'components',
src:'**',
dest:'build/'
}]
}
}
注意:有关其他信息,请参阅grunt文档的Globbing pattern部分: