gulp-replace在替换时不完全匹配

问题描述 投票:0回答:1

我有两个Gulp任务:

function changeAPIEnvDirectoryForProd() {
    return src('src/app/modules/models/ApiUrl.ts', { base: "src/app/modules/models/" })
    .pipe(replace('../../../environments/environment', '../environments/environment')).pipe(
        dest('src/app/modules/models/', {overwrite: true})
    );
}

function changeAPIEnvDirectoryForLocal() {
    return src('src/app/modules/models/ApiUrl.ts', { base: "src/app/modules/models/" })
    .pipe(replace('../environments/environment', '../../../environments/environment')).pipe(
        dest('src/app/modules/models/', {overwrite: true})
    );
}

两者都取决于环境,一个用于生产,另一个用于本地开发。

我遇到的问题是,如果在我的文件中有:

import { environment } from '../../../environments/environment'

export class Apis {
    static bo = `${environment.boAPIUrl}/api/v1/bo`;
}

[当我运行changeAPIEnvDirectoryForLocal任务时,它将以前的代码替换为:

import { environment } from '../../../../../environments/environment'

这是因为根据我的代码,它应该保持不变。我认为问题在于替换搜索这两个字符串是相同的:

../../../environments/environment

../environments/environment

反正有指定确切匹配的地方吗?

node.js gulp gulp-replace
1个回答
0
投票

最简单的方法是在搜索词中包含',如下所示:

.pipe(replace("'../../../environments/environment'", 'environments/environment'))

现在它将只查找整个学期。

© www.soinside.com 2019 - 2024. All rights reserved.