反映源文件夹grunt的目标文件
Destination file that reflects source folders grunt
如果这个线程的名称有点奇怪,很抱歉。很难用一句话来解释。
基本上,这就是我想要的文件夹设置的样子:
html5
|
src-----------------------build------_config
| | |
master master Gruntfiles etc
| |
css-images-js-index.html |
| | | |
.css .jpg .js |
|
.css .jpg .js
在我的根文件夹(html5)中,我有一个src和一个构建文件夹。在这两个文件夹中,将有比主文件夹多得多的文件夹,所有文件夹都将具有相同的布局(不同的格式)。我基本上想做的是,我希望src>master文件夹中的内容被展平到相应的build>master文件夹。然而,我已经尝试了这里显示的压平选项,它会压平整个内容,导致主文件夹的内容直接放在构建文件夹中,这不是我想要的。我一直在摆弄重命名函数,但对于这项任务来说,它似乎过于复杂了。没有其他方法可以做到这一点吗?
编辑:我有这个任务:
copy: {
images: {
files: [
{
expand: true,
flatten: true,
cwd: "../src/",
src: ["**"],
dest: "../build/master",
filter: "isFile"
},
]
}
},
这正是它应该做的。但是,我真的需要目标文件夹"master"是动态的。它不应该像现在这样被硬编码。它需要是从src文件夹中复制的相应文件夹。不幸的是,把"**"放在那里是行不通的。
您需要将cwd
和flatten
(以及dest
)组合起来,以使您想要的东西、想要的地方变平。由于您不知道文件夹的名称,因此必须使用自定义任务来获取文件夹列表,然后为每个文件夹生成并运行copy
目标:
grunt.registerTask('myCopy', function() {
var srcFolder = 'src';
var dstFolder = 'dest';
var fs = require('fs');
var path = require('path');
var srcpath = path.resolve(__dirname, srcFolder);
var folders = fs.readdirSync(srcpath).filter(function(file) {
return fs.statSync(path.join(srcpath, file)).isDirectory();
});
folders.forEach(function(f){
grunt.config.set("copy." + f, {
files : [{
expand: true,
flatten: true,
cwd: srcFolder + '/' + f,
src: '**',
dest: dstFolder + '/' + f,
filter: 'isFile',
}]
});
grunt.task.run('copy:' + f);
});
});
相关文章:
- gull.dest未创建目标文件夹
- 当目标为可下载文件时,当 href 时,Ajax 函数不会在类上触发
- iPhone应用程序或移动野生动物园的动画PNG文件的替代方案,目标是模拟短视频剪辑的即时播放
- 在初始页面加载时加载目标 ajax php 文件
- 检查目标文件是否已存在
- jst:编译目标未写入,因为编译的文件为空
- Javascript下载文件强制提示目标
- 使用 gulp 编译 TypeScript 会创建一个不需要的目标文件夹
- 压缩jpeg以达到指定目标图像文件大小的算法
- gulp:如何缩短未知来源的目标文件夹
- 以动态id为目标's在javascript文件中
- 如何在Grunt目标之间共享文件
- 如何在IE11上单击文件时触发保存目标?
- 文件上传与jquery表单插件和mvc 3是不填写与我的部分视图的目标属性
- Gulp sass将空的scss文件复制到目标文件夹
- jquery验证表单字段,但不向目标文件提交表单数据
- 确保HTML5文件阅读器执行时,目标内容已更改自上次使用
- changePage在目标页面java脚本文件中调用方法
- 反映源文件夹grunt的目标文件
- Gulp dest()基于文件名的动态目标文件夹