【问题标题】:Setting up build server using Node and Gulp使用 Node 和 Gulp 设置构建服务器
【发布时间】:2016-12-18 12:04:00
【问题描述】:

我正在开发一个前端包,这是我的环境:

  • IDE:Visual Studio(我在 Windows 上,我们使用 TypeScript)
  • 包管理器:NPM
  • 任务运行器:Gulp
  • CI:团队城市

我的问题是我试图避免在我的构建服务器上全局安装 node 和 Gulp(主要是因为我不想费心管理这个 - 安装、更新、同步等)。

所以我找到了一个 NuGet 包 (https://www.nuget.org/packages/Npm.js/),它允许我在没有在机器上安装节点的情况下恢复所有包。但问题是我安装的本地 Gulp 假定它旁边或机器路径中有一个 node.exe:

@IF EXIST "%~dp0\node.exe" (
  "%~dp0\node.exe"  "%~dp0\..\gulp\bin\gulp.js" %*
) ELSE (
  @SETLOCAL
  @SET PATHEXT=%PATHEXT:;.JS;=;%
  node  "%~dp0\..\gulp\bin\gulp.js" %*
)

现在显然这行不通,因为我没有在构建机器上安装节点,也没有在 node_modules 中安装本地节点。

那么有什么方法可以避免在每个构建服务器上全局安装我的构建工具?或者 Node 和 Gulp 是否打算安装在任何地方?那么应该如何维护更新?这不像是每隔几个月发布一次的 Visual Studio 版本……或者您是否只是忽略了构建工具的频繁发布?

我也可以将 NuGet 包添加到路径中,但是(node.exe 所在的路径)取决于 NuGet 包的版本,并且在更新它时需要更多的维护。所以我也不想走这条路……

【问题讨论】:

    标签: node.js gulp continuous-integration


    【解决方案1】:

    这不是最佳的,但这是我最终做的:我使用 NuGet package 在 MSBuild 中设置环境变量并创建了以下构建配置:

    <Target Name="GulpBuild">
        <SetEnvVariable Name="path" Value="%path%;..\packages\Node.js.5.3.0" />
        <Exec Command="node_modules/.bin/gulp" />
    </Target>
    

    现在,当我在 VS (CTRL+Shift+B) 中构建解决方案时,它会将节点位置添加到路径中,然后调用 gulp。当然,我想我可以自己编写 gulp 命令,包括节点路径。 无论如何,这当然不是最优的,因为如果我更新Node.js 版本,我需要手动更新位置,但我找不到更好的解决方案。

    至少路径配置是在仓库内部定义的,不依赖于任何机器配置。

    【讨论】:

      【解决方案2】:

      迟到了,但我认为您可以设置您的 gulp 项目以在安装到 node_modules 的 gulp 的情况下运行。例如,在npm start 上,您可以使用二进制文件的路径。

      简而言之,您可以将项目更改为不使用全局 gulp 吗?这可能是寻找 int 的工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-18
        • 1970-01-01
        • 2016-09-07
        • 2015-12-19
        • 1970-01-01
        • 1970-01-01
        • 2014-07-03
        • 1970-01-01
        相关资源
        最近更新 更多