【问题标题】:Replacing strings in Typescript file with gulp-replace用 gulp-replace 替换 Typescript 文件中的字符串
【发布时间】:2017-03-03 20:40:55
【问题描述】:

我正在尝试使用 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() };
}

【问题讨论】:

  • 你的 gulp dest 看起来有点不对劲。是 ./ 你的构建文件夹吗?
  • 是的。我错误地认为目的地是相对于源头的。谢谢!

标签: angular gulp-replace typescript2.2


【解决方案1】:

gulp dest 是错误的。很高兴它已修复。

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

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

一切顺利,工作完成,但如果您的意图是:

2 - 覆盖原来的

那么您的逻辑将无法在第二轮运行,因为您将替换字符串“buildVersion”,在这种情况下,您可能需要替换正则表达式,例如 /\d\d.\d\d.\d\ d/

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

00.00.00

那么当它被替换为:

01.01.44

正则表达式在第二轮仍然有效。

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

【讨论】:

  • 不久之后,我发现了与您建议的相同的事情,即覆盖会导致下次调用时替换失败。为了解决这个问题,我使用了正则表达式字符串/(version: )".+"/ 和替换$1"${process.env.npm_package_version}",以便只替换版本字段后面的字符串。再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-19
相关资源
最近更新 更多