用gulp-replace替换Typescript文件中的字符串

时间:2017-03-03 20:40:55

标签: angular gulp-replace typescript2.2

我尝试使用gulp-replace任务将构建版本插入到我的Angular 2组件文件中。我正在从流程变量process.env.npm_package_version中检索构建版本。这部分工作正常,因为我能够将值记录到控制台并获得预期值。但是,我的任务的gulp-replace部分无效。我先执行replace任务。

任务:

const replace = require('gulp-replace');

gulp.task('replace', () => {
    let version = `${process.env.npm_package_version}`;
    gulp.src('src/app/app.component.ts')
        .pipe(replace('buildVersion', version))
        .pipe(gulp.dest('./'));
});

来源:

import { Component, OnInit } from '@angular/core';

@Component({
    selector: 'my-app',
    templateUrl: './app/app.component.html',
    styleUrls: ['./app/app.component.css']
})
export class AppComponent implements OnInit {
    constructor() {}
    ngOnInit() {}
    app = { version: "buildVersion", currentYear: new Date().getFullYear() };
}

1 个答案:

答案 0 :(得分:1)

gulp dest错了。很高兴它被修复了。

顺便说一下,如果你的意图是:

1 - 复制到您的构建文件夹

一切都很好,干得好,但如果你的意图是:

2 - 覆盖原始

然后你的逻辑将无法第二次运行,因为你会替换字符串" buildVersion"在这种情况下,您可能需要替换正则表达式,如/\ddd。\\\\\\\\\\\\\\\\\\

然后原始文件中的buildVersion可以是:

00.00.00

然后当它被替换为:

44年1月1日

正则表达式仍然会第二次运行。

我提到它的原因是因为你提到了相对于源的目的地,它暗示了我的覆盖。