Путь к массиву не работает с gulp.task

У меня есть задача gulp, которая объединяет и искажает файлы js при изменении. Если я использую только один источник, он работает. Однако я изучаю angular и хочу, чтобы он сначала объединял модули так, как это:

https://medium.com/@dickeyxxx/best-practices-for-building-angular-js-apps-266c1a4a6917#.mujtfmj63

Я использую:

gulp.task('scripts', function(){
    return gulp.src(path.gulp.paths.src + ['/**/module.js', '/**/*.js'])
    .pipe(concat('all.min.js'))
    .pipe(uglify())
    .pipe(gulp.dest(path.gulp.paths.dist));
  });

и задача gulp запускается, но не создает файл all.min.js. Если я удалю массив и просто использую это, он работает:

gulp.task('scripts', function(){
    return gulp.src(path.gulp.paths.src + '/**/*.js')
    .pipe(concat('all.min.js'))
    .pipe(uglify())
    .pipe(gulp.dest(path.gulp.paths.dist));
  });

Мой каталог настроен как

public
 |  
 +-- modules
 |  |  
 |  +-- module.js
 +-- test.js

Что я делаю не так?


person Mike    schedule 31.12.2015    source источник
comment
См. также заголовок stackoverflow.com/questions/21386940/   -  person    schedule 31.12.2015


Ответы (1)


Вы пытаетесь добавить path.gulp.paths.src (я полагаю, что это строка) в массив. Для этой операции JavaScript сначала преобразует массив в строку (см. https://stackoverflow.com/a/7124907). Предполагая, что ваша строка './public', вы в конечном итоге передаете gulp.src './public/**/module.js,/**/*.js', что не является допустимым путем.

Вы можете добавлять строку перед каждым элементом массива ([path.gulp.paths.src + '/**/module.js', path.gulp.paths.src + '/**/*.js']) или использовать параметр cwd чтобы просто установить его в качестве основы для всех ваших файлов:

return gulp.src(['/**/module.js', '/**/*.js'], {cwd: path.gulp.paths.src})
...
person Igor Dubinskiy    schedule 31.12.2015