什么' ... paths.js'意思是' gulp.src([... paths.js,'!gulpfile.babel.js'],{base:'。'})'?

时间:2016-08-20 12:37:15

标签: javascript node.js gulp ecmascript-6

我有以下gulp任务:



// 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或数组的文件。
但我无法理解' ... paths.js'这里。 没有以' paths.js'命名的文件。在项目目录中。

有没有人可以帮助我理解它?

1 个答案:

答案 0 :(得分:5)

该上下文中的

let a = [1, 2, 3]; let b = [...a, 4, 5]; console.log(b); // 1, 2, 3, 4, 5是ES2015(又名“ES6”)spread syntax:它采用可迭代的内容(如数组)并将其展开为数组中的离散元素。

示例:

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

您还可以在函数调用中使用扩展语法:

#include <iostream>
#include <cstdint>
#include <iomanip>
#include <string>

int main()
{

    std::cout << "sizeof(char) = " << sizeof(char) << std::endl;
    std::cout << "sizeof(std::string::value_type) = " << sizeof(std::string::value_type) << std::endl;

    std::string _s1 ("abcde");
    std::cout << "s1 = " << _s1 << ", _s1.size() = " << _s1.size() << std::endl;


    std::string _s2 ("abcdé");
    std::cout << "s2 = " << _s2 << ", _s2.size() = " << _s2.size() << std::endl;

    return 0;
}