gpt4 book ai didi

gulp - 在 gulp 中使用 concat() 保持文件夹结构

转载 作者:行者123 更新时间:2023-12-04 12:50:16 25 4
gpt4 key购买 nike

文件夹结构:

project
|
+-coffee
| |
| +-main.coffee
| |
| +-testDir
| | |
| | +-models.coffee
| | |
| | +-views.coffee
| |
| +-anotherDir
| | |
| | +-routes.coffee
| | |
| | +-views.coffee
| | |
| | +-modules.coffee
| |
| +- etc...
|
+-www

想法是在将文件写入www/ 目录时,保持coffee/ 目录的文件夹结构。 coffee/ 中可以有任意数量的子文件夹。每个文件夹中的所有 .coffee 文件都应连接到一个 modules.js 文件中:

www
|
+-modules.js
|
+-testDir
| |
| +-modules.js
|
+-anotherDir
| |
| +-modules.js
|
+- etc...

我目前有这个 gulp 任务:

gulp.task('coffee', function() {
gulp.src('./coffee/**/*.coffee', {base: './coffee/'})
.pipe(coffee({bare: true}).on('error', gutil.log))
.pipe(uglify())
// .pipe(concat('modules.js'))
.pipe(gulp.dest('./www'))
});

如果没有 concat(),文件会被放置到正确的子文件夹中(但它们不会串联)。使用 concat() 将所有文件连接到一个 modules.js 文件中:

www
|
+-modules.js

我怎样才能正确地意识到这一点?

最佳答案

这是一个使用 gulp-flatmap 的解决方案:

var flatmap = require('gulp-flatmap');

gulp.task('coffee', function() {
return gulp.src('./coffee/{*,}/', {base:'./coffee'})
.pipe(flatmap(function(stream, dir) {
return gulp.src(dir.path + '/*.coffee')
.pipe(coffee({bare: true}).on('error', gutil.log))
.pipe(uglify())
.pipe(concat('modules.js'))
.pipe(gulp.dest('./www/' + path.relative(dir.base, dir.path)))
}))
});

这首先将 coffee/ 目录及其所有直接子目录放入流中。然后,这些目录中的每一个都被映射到一个新流,该流连接了相应目录中的所有 .coffee 文件。最后,使用 path.relative() 确定每个生成的 modules.js 文件的适当目标文件夹。 .

关于gulp - 在 gulp 中使用 concat() 保持文件夹结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39932621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com