Angularjs2文件上的gulp extname有两个点

时间:2016-04-26 06:15:45

标签: gulp angular gulp-rename

以下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'));
});

1 个答案:

答案 0 :(得分:0)

gulp-rename 仅替换最后一个点后的扩展名。它内部使用path.extname() documentation状态:

  

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

你的问题是这三行:

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

此处您删除了.ts扩展程序,因此当您最终到达rename({extname: '.js'}时,您的文件扩展名实际为.service。删除这三行并重命名。