我正在尝试使用grunt-contrib-copy从父文件夹复制文件。我的文件夹结构是:
-libs
-html5shiv
-respond
-jquery
-apps
-exampleApp1
-GruntFile.js
-build
-exampleApp2
-GruntFile.js
-build当我在exampleApp1中运行GruntFile.js时,我尝试将libs文件夹中的所有构建文件复制到应用程序/exampleApp1/ JavaScript中。我在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
}
]
},},
目前,它将所有文件复制到应用程序/库中,因为每个文件在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发布于 2015-02-02 23:03:38
答案其实很简单。有一个重命名功能,可以与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(/^..\/..\// ,"") );
}
}
]
},发布于 2015-05-04 22:29:34
尝试使用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
}
]
},https://stackoverflow.com/questions/28279852
复制相似问题