gulp重命名多个文件
gulp rename multiple files
我有一个gump脚本来操作一个主html文件,并根据数组将其重命名为多个名称。这是剧本。
gulp.task('default', function () {
var data = ['name1','name2'];
for(var name in data){
gulp.src('src/master.html')
.pipe(*dosomething...*)
.pipe(rename(function(path) {
path.basename = name;
path.extname = '.html';
}))
.pipe(gulp.dest('dist'));
}
});
但只生成name2.html。有人能告诉我我的代码出了什么问题吗。
您的循环创建了多个传递给rename
的函数。这些函数中的每一个都引用相同的变量name
。然而,这些函数不会立即执行,而是只有在所有都已创建之后才执行。这意味着所有函数都引用name
在循环中的最后一个值。
您需要通过用循环结构替换for
循环来创建多个name
变量,该循环结构为每个值创建一个新的函数范围,例如Array.forEach
。
您还在循环中创建多个流。您应该在将这些流与merge-stream
合并后返回,以便gullow可以确定您的任务何时完成。
var gulp = require('gulp');
var rename = require('gulp-rename');
var merge = require('merge-stream');
gulp.task('default', function () {
var data = ['name1','name2'];
var streams = [];
data.forEach(function(name) {
var stream = gulp.src('src/master.html')
.pipe(rename(function(path) {
path.basename = name;
path.extname = '.html';
}))
.pipe(gulp.dest('dist'));
streams.push(stream);
});
return merge(streams);
});
for ... in
用于循环遍历对象的键。对于数组,键是索引值(0和1),所以我对生成name2.html
感到惊讶——也许它在以前的运行中就已经存在了。
更改为循环for (var i = 0; i < data.length; i++) { ...
的索引,或使用path.basename = data[name];
从数组中获取名称
相关文章:
- 正在使用Dropzone.js删除服务器上已重命名的文件
- 如何使用laravel重命名已存储在服务器中的文件
- gulp重命名多个文件
- 使用 gruntjs 自定义初始化任务重命名模板文件夹
- 重命名上传的文件Ruby On Rails
- 导出时如何重命名excel文件
- 重命名Alfresco脚本中的文件
- 我正在尝试将javascript文本框的输入保存回服务器.我想从保存的弹出文本框中获得输入,以重命名文件夹
- 使用AjaxForm Jquery重命名文件
- 批量文件重命名
- 在S3中上传之前重命名文件
- 在multer中重命名上载的文件
- 仅对文件进行 Gulp 重命名,而不重命名目录
- 有没有办法让我的.js文件自毁,或重命名自己,或者在一次使用后将自己移动到新位置
- 重命名上传的文件,以便可以将其删除 DropZone.js
- Phonegap使用moveTo重命名文件
- 将html文件重命名为php时编码错误
- 将块大小的文件重命名为Blob
- ruby on rails-将我的文件重命名为.js.erb可以在javascript中编写erb,但不能在erb中编写
- 使用AngularJS和ng文件上传在文件重命名时保持原始格式