首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Cake安装保龄球包(http://cakebuild.net) )

如何使用Cake安装保龄球包(http://cakebuild.net) )
EN

Stack Overflow用户
提问于 2017-08-14 15:39:42
回答 2查看 473关注 0票数 2

我正致力于将Powershell构建脚本迁移到Cake脚本,以前我会在找到bower.json文件的目录集合上运行以下命令:

代码语言:javascript
复制
foreach ($directory in (Get-CommonPath $bowerDirs)) {
    Push-Location $directory
    &bower install
    Pop-Location
}

但是,由于似乎没有一个蛋糕别名的保龄球,我正在努力找出我应该如何做到这一点(&bower install)使用蛋糕。

基于@garyewanpark的答复,我尝试了以下的更新

代码语言:javascript
复制
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。

代码语言:javascript
复制
c:\
  - Projects
    - Branch
      - build.ps1
      - build.cake
      - Sol1
        - Proj1
          - Misc proj files
          - bower.json
      - Sol2
        - Proj2
          - Misc proj files
          - bower.json
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-21 07:27:23

现在已经创建了一个Cake.Bower Addin,可以从这里下载:

https://www.nuget.org/packages/Cake.Bower/

票数 3
EN

Stack Overflow用户

发布于 2017-08-14 16:31:28

你说得对,目前蛋糕里没有鲍尔的加载项。但是有几件事你可以做。

第一个是为这个任务创建一个加载项。有一个由Jamie撰写的关于如何开始这样做的博客系列,这可以在我们的资源部分这里中找到。

第二个选项是使用Cake.Npm加载项。在我的package.json文件中,我通常让install命令执行bower install,而init命令执行npm install。这样做的效果是,在Cake.Npm外接程序中只发出一个命令,同时执行npm和bower安装。

最后一个,我认为现在对您有意义的是使用一个过程别名,这是文档化的这里。例如,您应该能够这样做:

代码语言:javascript
复制
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);

注意:为了让这件事起作用,我必须完全声明到保尔居住的地方的道路,这是我没想到要做的。要找出机器上的位置,请运行以下命令:

代码语言:javascript
复制
&where.exe bower

从PowerShell提示符,或简单地:

代码语言:javascript
复制
where bower

从一个命令窗口。这将输出保尔居住的所有位置。因此,最后的代码如下所示,我已经测试了它,它可以工作:

代码语言:javascript
复制
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));
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45678163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档