我正致力于将Powershell构建脚本迁移到Cake脚本,以前我会在找到bower.json文件的目录集合上运行以下命令:
foreach ($directory in (Get-CommonPath $bowerDirs)) {
Push-Location $directory
&bower install
Pop-Location
}但是,由于似乎没有一个蛋糕别名的保龄球,我正在努力找出我应该如何做到这一点(&bower install)使用蛋糕。
基于@garyewanpark的答复,我尝试了以下的更新
Task("BowerInstall")
.Does(() => {
var bowerRoots = GetBowerRoots();
foreach (var bowerRoot in bowerRoots.Select(x => x.FullPath))
{
try
{
var exitCodeWithArgument = StartProcess("bower", new ProcessSettings {
Arguments = "install",
WorkingDirectory = bowerRoot
});
Information("Exit code: {0}", exitCodeWithArgument);
}
catch (Exception ex)
{
Information($"Failed on {bowerRoot}, {ex.Message}");
}
}
});但是,这给出了以下每个尝试路径的错误消息
在C:/Projects/dev/WebUI上失败,系统找不到指定的文件
如果使用命令提示符在目录中运行bower安装,它将成功运行。
正在运行的目录结构如下所述。在一个git分支中有多个解决方案。每个解决方案都可以包含多个项目,有些可以包含一个bower.json文件。GetBowerRoots()方法返回包含bower.json文件的目录的DirectoryPathCollection。
c:\
- Projects
- Branch
- build.ps1
- build.cake
- Sol1
- Proj1
- Misc proj files
- bower.json
- Sol2
- Proj2
- Misc proj files
- bower.json发布于 2017-08-21 07:27:23
现在已经创建了一个Cake.Bower Addin,可以从这里下载:
发布于 2017-08-14 16:31:28
你说得对,目前蛋糕里没有鲍尔的加载项。但是有几件事你可以做。
第一个是为这个任务创建一个加载项。有一个由Jamie撰写的关于如何开始这样做的博客系列,这可以在我们的资源部分这里中找到。
第二个选项是使用Cake.Npm加载项。在我的package.json文件中,我通常让install命令执行bower install,而init命令执行npm install。这样做的效果是,在Cake.Npm外接程序中只发出一个命令,同时执行npm和bower安装。
最后一个,我认为现在对您有意义的是使用一个过程别名,这是文档化的这里。例如,您应该能够这样做:
var exitCodeWithArgument = StartProcess("bower", new ProcessSettings {
Arguments = "install",
WorkingDirectory = <path to folder>
});
// This should output 0 as valid arguments supplied
Information("Exit code: {0}", exitCodeWithArgument);注意:为了让这件事起作用,我必须完全声明到保尔居住的地方的道路,这是我没想到要做的。要找出机器上的位置,请运行以下命令:
&where.exe bower从PowerShell提示符,或简单地:
where bower从一个命令窗口。这将输出保尔居住的所有位置。因此,最后的代码如下所示,我已经测试了它,它可以工作:
foreach (var bowerRoot in bowerRoots.Select(x => x.FullPath))
{
try
{
var exitCodeWithArgument = StartProcess("C:/Users/gary.park/AppData/Roaming/npm/bower.cmd", new ProcessSettings {
Arguments = "install",
WorkingDirectory = bowerRoot
});
Information("Exit code: {0}", exitCodeWithArgument);
}
catch (Exception ex)
{
Information(string.Format("Failed on {0}, {1}", bowerRoot, ex.Message));
}
}https://stackoverflow.com/questions/45678163
复制相似问题