使用 Gulp 根据目录名称连接和重命名文件



我正在尝试设置我的gulpfile.js以连接src/js文件夹中的所有.js文件,并根据它们的父文件夹命名它们。

文件夹结构示例:

project
|
+-assets
| |
| +-app.min.js
| |
| +-vendor.min.js
|
+-src
| |
| +-app
| | |
| | +-file1.js
| | |
| | +-file2.js
| |
| +-vendor
| | |
| | +-file1.js
| | |
| | +-file2.js

我可以为特定文件夹设置它,并为每个文件夹设置特定的文件名,但我想要一个可以运行文件夹和名称的未定义变体的函数。

我之前使用的是:

gulp.task('js', function () {
gulp.src('src/js/app/**/*.js')
.pipe(plumber(plumberErrorHandler))
.pipe(jshint())
.pipe(jshint.reporter('fail'))
.pipe(concat('app.min.js'))
.pipe(uglify())
.pipe(gulp.dest('assets/js'))
});

看看这个官方食谱。它应该准确地显示您想要的内容。

function getFolders(dir) {
return fs.readdirSync(dir)
.filter(function(file) {
return fs.statSync(path.join(dir, file)).isDirectory();
});
}
var folders = getFolders('src');
folders.map(function(folder) {      
gulp.src(path.join('src', folder, '/**/*.js'))
.pipe(concat(folder + '.js'))
.pipe(gulp.dest('assets'));
});

但我想要一个可以运行文件夹和名称的未定义变体的函数。

我个人不知道一个简单的方法可以做到这一点。我通常要解决我的问题,那就是用这些文件夹的名称设置一个路径变量,然后像这样构建我的任务。

var path = [ 'app', 'vendor' ];
gulp.task('js', function () {
for (var i = 0; i < path.length; i++) {
var p = path[i];
gulp.src('src/' + p + '/**/*.js')
.pipe(plumber(plumberErrorHandler))
.pipe(jshint())
.pipe(jshint.reporter('fail'))
.pipe(concat(p + '.min.js'))
.pipe(uglify())
.pipe(gulp.dest('assets/js'))
}
});

我听说gulp-path可能会做你想做的事,但我个人还没有研究过。

相关内容

  • 没有找到相关文章

最新更新