在 postbuild 事件中编辑 js 文件

Edit js file in postbuild event

我已经设置了 post 构建事件,以便根据 ConfigurationName 为我复制文件,并且希望能够在客户端的配置 (js) 文件中设置 "environment variable" angular 允许调试信息可见或不依赖于环境的应用程序 运行 应用程序在。

为此我创建了一个 powershell 脚本 (ReplaceText.ps1):

function replace-file-content([String] $path, [String] $replace, [String] $replaceWith)
{
(Get-Content $path) | Foreach-Object {$_ -replace $replace,$replaceWith} | Out-File $path
}

并将此行添加到我的网络项目的 post 构建事件中。

if "$(ConfigurationName)"=="LIVE" (powershell -File "$(ProjectDir)Tools\ReplaceText.ps1" "$(ProjectDir)app\application.config.js" "DEBUG" "LIVE")

我希望在我的 application.config.js 文件中针对 LIVE 构建配置构建时将单词 "DEBUG" 更改为 "LIVE",该文件包含以下行:

$provide.constant('currentEnv', 'DEBUG');

构建成功,但我的文件没有发生任何变化。谁能指出我哪里出错了?

我知道我可以用 Gulp 或另一个任务运行器 BTW 来做这类事情,但我试图在不引入另一个依赖项的情况下做到这一点,而只是使用 VS post 构建事件 & PS。 :)

干杯

您的 PS 代码只定义了一个函数,但没有任何东西可以调用它。

使用param作为脚本中的第一条语句将命令行转换为脚本的参数:

param([String] $path, [String] $replace, [String] $replaceWith)

(Get-Content -literalPath $path -raw) -replace $replace, $replaceWith |
    Out-File $path -encoding UTF8
  • -literalPath - 正确处理带有 [] 符号的路径,否则将被解释为通配符;
  • -raw - 将整个文件作为一个字符串读取以进行加速,自 PowerShell 3 起可用。