Глоток extname для файлов Angularjs2 с двумя точками
Задача переименования ниже хорошо работает для файлов angularjs2 с одной точкой, таких как 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 ответ
gulp-rename
заменяет только расширение после последней точки. Оно использует path.extname()
внутренне о котором говорится в документации:
Возвратите расширение пути от последнего '.' до конца строки в последней части пути
Ваша проблема в этих трех строках:
.pipe(rename({
extname: ''
}))
Здесь вы удалите .ts
расширение, поэтому, когда вы, наконец, доберетесь до rename({extname: '.js'}
расширение вашего файла на самом деле .service
, Оставьте эти три строки, и ваше переименование работает.