src目录:
dir1
|-- 1.js
|-- 2.js
`-- sub-dir1
`-- 1.js
目录:
min
`-- dir1
|-- 1.min.js
|-- 2.min.js
`-- sub-dir1
`-- 1.min.js
我的代码段
uglify: {
t2: {
options: {
banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +
'<%= grunt.template.today("yyyy-mm-dd") %> */'
},
files: [{
expand: true,
src: ['dir1/**/*.js'],
dest: 'min',
rename: function (dst, src) {
return dst + '/' + src.replace('.js', '.min.js');
}
}]
}
}
但我想跳过目标目录下的源目录,所需的结构是:
min
|-- 1.min.js
|-- 2.min.js
`-- sub-dir1
`-- 1.min.js
答案 0 :(得分:0)
有几种方法可以实现这一目标。 解决方案A (下面)是最简单和最常用的。
解决方案A
动态构建文件对象时,可以使用cwd属性。文档中cwd
属性的描述为:
cwd
所有src
次匹配都与此路径相关(但不包括)。
将您的files
媒体资源更改为以下内容:
// ...
files: [{
expand: true,
cwd: 'dir1/', // <-- Add this.
src: '**/*.js', // <-- Change your src glob to this.
dest: 'min',
rename: function (dst, src) {
return dst + '/' + src.replace('.js', '.min.js');
}
}]
// ...
解决方案B
另一种方法(不使用cwd
属性)是将rename
方法更改为以下方法:
// ...
rename: function (dst, src) {
src = src.split('/');
src.shift();
src = src.join('/');
return dst + '/' + src.replace('.js', '.min.js');
}
// ...