Что означает "... paths.js" в gulp.src ([... paths.js, '! Gulpfile.babel.js'], {base: '.'}) '?

javascript node.js gulp ecmascript-6

103 просмотра

1 ответ

У меня есть следующее задание глотка:

// Compile ES6 to ES5 and copy to dist
gulp.task('babel', () =>
  gulp.src([...paths.js, '!gulpfile.babel.js'], { base: '.' })
    .pipe(plugins.newer('dist'))
    .pipe(plugins.sourcemaps.init())
    .pipe(plugins.babel())
    .pipe(plugins.sourcemaps.write('.', {
      includeContent: false,
      sourceRoot(file) {
        return path.relative(file.path, __dirname);
      }
    }))
    .pipe(gulp.dest('dist'))
);

Согласно Gulp Doc ( gulp.src ) я узнал, что gulp.src испускает файлы, соответствующие предоставленному glob или массиву glob.
Но я не могу понять значение слова "... paths.js" здесь. В каталоге проекта нет файла с именем paths.js.

Есть ли кто-нибудь, кто может помочь мне понять это?

Автор: Colin Witkamp Источник Размещён: 08.11.2019 11:19

Ответы (1)


5 плюса

Решение

...в этом контексте является ES2015 ( так называемым «ES6») распространение синтаксиса : Он принимает содержание итератора (как массив) и спреды его из в дискретные элементы в массиве.

Пример:

let a = [1, 2, 3];
let b = [...a, 4, 5];
console.log(b); // 1, 2, 3, 4, 5

Так

gulp.src([...paths.js, '!gulpfile.babel.js'], { base: '.' })

... создает новый массив с содержимым, за paths.jsкоторым следует, '!gulpfile.babel.js'и передает этот массив в src. Я предполагаю, paths.jsчто это массив; если это так, в данном конкретном случае его можно заменить на concat:

gulp.src(paths.js.concat('!gulpfile.babel.js'), { base: '.' })

Вы также можете использовать синтаксис распространения в вызовах функций:

function testing(a, b, c) {
  console.log("a = " + a);
  console.log("b = " + b);
  console.log("c = " + c);
}
let x = [1, 2, 3];
testing(...x);  // Shows:
                // a = 1
                // b = 2
                // c = 3

Автор: T.J. Crowder Размещён: 20.08.2016 12:40
Вопросы из категории :
32x32