我正在尝试使用grunt-contrib-copy从父文件夹复制文件。我的文件夹结构是:
-libs
-html5shiv
-respond
-jquery
-apps
-exampleApp1
-GruntFile.js
-build
-exampleApp2
-GruntFile.js
-build
当我在exampleApp1中运行GruntFile.js时,我试图将libs文件夹中的所有JavaScript文件复制到apps / exampleApp1 / build。我在GruntFile.js中有以下设置:
build_dir: 'build';
lib_files: {
js: [
'../../libs/html5shiv/dist/html5shiv.js',
'../../libs/respond/dest/respond.min.js',
'../../libs/jquery/dist/jquery.min.js'
]
};
copy: {
build_libjs: {
files: [
{
src: [ '<%= lib_files.js %>' ],
dest: '<%= build_dir %>/',
cwd: '.',
expand: true
}
]
},
},
目前,由于&#39; .. / .. /&#39,它将所有文件复制到apps / libs;每个文件都在lib_files.js数组中。如何确保文件最终在build文件夹中?:
-apps
-exampleApp1
-GruntFile.js
-build
-libs
-html5shiv/dist/html5shiv.js
-libs/respond/dest/respond.min.js
-jquery/dist/jquery.min.js
答案 0 :(得分:2)
实际上答案很简单。有一个重命名函数,可以与grunt-contrib-copy结合使用。
“您只需要将一个参数附加到我的配置中,这将覆盖Grunt文件实用程序的标准重命名功能。”
从:
http://fettblog.eu/blog/2014/05/27/undocumented-features-rename/
我将它与一个简单的正则表达式结合起来并解决了问题:
build_libjs: {
files: [
{
src: [ '<%= lib_files.js %>' ],
dest: '<%= build_dir %>/',
cwd: '.',
expand: true,
rename: function(dest, src) {
//Replace '../../' with an empty string
return dest + ( src.replace(/^..\/..\// ,"") );
}
}
]
},
答案 1 :(得分:0)
尝试使用 cwd 属性更改源目录
lib_files: {
js: [
'html5shiv/dist/html5shiv.js',
'respond/dest/respond.min.js',
'jquery/dist/jquery.min.js'
]
};
copy: {
build_libjs: {
files: [
{
src: [ '<%= lib_files.js %>' ],
dest: '<%= build_dir %>/',
cwd: '../libs',
expand: true
}
]
},