“file”参数的值来自何处

时间:2018-02-20 21:34:04

标签: javascript function typescript nested arguments

以下是gulp文件的代码段。我想理解将参数“file”传递给内部函数。更重要的是,我想理解这个习惯用法,因为我经常在Javascript中看到它。我的猜测是“tsResult.js”遍历此Typescript项目中的各种javascript文件,“file”参数是每个这样的文件。我怎样才能在下面和将来解读这种用法

gulp.task('scripts', ['clean'], () => {
const tsResult = tsProject.src().pipe(sourcemaps.init()).pipe(tsProject());
  return tsResult.js.pipe(sourcemaps.write({
    includeContent: false,
    sourceRoot: function (file) {
      return path.relative(path.dirname(file.path), file.base);
    }
  }))
    .pipe(gulp.dest(OUTPUT_FOLDER));
});

1 个答案:

答案 0 :(得分:0)

许多JS库大量使用名为Dependency Injection的设计模式。

基本上,gulp-sourcemaps可以选择覆盖源根(文件所在的根URL)的确定方式。

来自gulp-sourcemaps documentation

  

设置托管源文件的位置(当includeContent设置为false时使用此位置)。这通常是URL(或绝对URL路径),而不是本地文件系统路径。默认情况下,源根是''或者如果设置了destPath,则是从源映射到源基目录的相对路径(这应该适用于许多开发环境)。如果使用相对路径(空字符串或以。开头的字符串),则将其解释为相对于目标的路径。该插件将其重写为相对于每个源映射的路径。

调用sourceRoot函数,传入当前正在处理的文件,并期望返回根路径。