Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Gulp基于目录名连接和重命名文件_Javascript_Gulp_Concatenation_Gulp Concat - Fatal编程技术网

Javascript 使用Gulp基于目录名连接和重命名文件

Javascript 使用Gulp基于目录名连接和重命名文件,javascript,gulp,concatenation,gulp-concat,Javascript,Gulp,Concatenation,Gulp Concat,我正在尝试设置我的gulpfile.js来连接我的src/js文件夹中的所有.js文件,并根据它们的父文件夹命名它们 文件夹结构示例: project | +-assets | | | +-app.min.js | | | +-vendor.min.js | +-src | | | +-app | | | | | +-file1.js | | | | | +-file2.js | | | +-vendor | | | | | +-file1.js | | | | | +-file2.js 我可

我正在尝试设置我的
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'))
});
但是我想要一个函数,它可以运行在未定义的文件夹和名称变体中

我个人不知道一个简单的方法。解决问题的方法通常是用这些文件夹的名称设置一个path变量,然后像这样构建我的任务

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'))
  }
});
var path=['app','vendor'];
gulp.task('js',function(){
对于(变量i=0;i
我听说可以做你想做的事,但我个人还没有研究过。

看看官方配方。它应该显示出你想要的东西

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'));
   });