0

下面的 gulp 重命名任务适用于带有一个点的 angularjs2 ts 文件,例如 appcomponent.ts。但是,如果文件名有两个点,例如 login.service.ts,gulp extname 就会混淆,并将第一个点之后的任何内容作为扩展名。知道如何让 extname 知道扩展名在最后一个点之后吗?

gulp.task('ts', function () {
  return gulp.src('src/**/*.ts')
    .pipe(rename({
      extname: ''
    }))
    .pipe(traceur({
      modules: 'instantiate',
      moduleName: true,
      annotations: true,
      types: true,
      memberVariables: true
    }))
    .pipe(rename({
      extname: '.js'
    }))
    .pipe(gulp.dest('build'));
});
4

1 回答 1

0

gulp-rename 仅替换最后一个点之后的扩展名。它在path.extname()内部使用文档所述:

从最后一个 '.' 返回路径的扩展名 到路径最后部分的字符串结尾

你的问题是这三行:

.pipe(rename({
  extname: ''
}))

在这里,您删除了.ts扩展名,因此当您最终获得rename({extname: '.js'}文件的扩展名时,实际上是.service. 删除这三行,您的重命名就可以了。

于 2016-04-26T06:46:55.120 回答