ng不被识别为内部或外部命令。 Jenkins + Angular CLI

时间:2017-11-15 00:06:12

标签: node.js jenkins angular-cli windows-server-2012-r2

我正在尝试为Angular CLI项目设置Jenkins。我在特定用户帐户下的Jenkins服务器上安装了node和Angular Cli。 如果我在服务器上打开命令提示符,则执行以下命令以验证它们是否已正确安装,结果如下:

enter image description here

我已经使用Jenkins配置了项目,我创建了两个构建步骤,两个执行两个bat文件。

一个运行:npm install

,第二个运行:ng build --prod

然后我构建Jenkins,它运行npm安装,但它无法运行ng build --prod,因为它说" '纳克'不被视为内部或外部命令"。

我做错了吗?是否有另一种方法可能在node_modules文件夹上使用angular cli,因此它不需要使用服务器上安装的angular cli。似乎Angular CLI仅为我的服务器上的用户安装,但不是由Jenkins用于构建的用户安装。

PS:我使用以下方式全局安装了Angular CLI:

npm i -g @ angular / cli

6 个答案:

答案 0 :(得分:7)

无需在服务器上安装angular cli,只需运行

即可
npm run ng -- build 

这将运行项目devDependencies

中的本地版本

这样您就可以将任何旗帜传递给您的本地cli npm run ng -- testnpm run ng -- lint

答案 1 :(得分:4)

为进一步澄清,当有人搜索相同的问题并找到此问题时(如我所做的那样):

如果要在运行build命令时使用--prod标志(如本问题所述),则可以使用:

npm run ng -- build --prod

重要的是“ ng”和“ build”之间的带空格的“-”。这是由于“ npm run”的语法所致,更多信息可以在这里找到:https://docs.npmjs.com/cli/run-script

这也解决了在已接受的答案下方的注释中描述的问题:“这是可行的,但排除了运行构建时--test之类的其他参数”

答案 2 :(得分:1)

npm run ng -- build 

我们可以这样使用而无需安装cli

答案 3 :(得分:0)

npm run ng build唯一的问题是它在构建后省略了--prod--test之类的任何其他参数。

以下是我用于从Jenkins成功运行角度构建的命令。最后一个命令通过设置路径变量以脏方式执行。不知道是否有更清洁的方法来做到这一点。这确实可以正确执行命令而不会遗漏任何内容。

@echo on
cmd /c npm install -g @angular/cli@latest

echo yarn Install
cmd /c yarn

echo Build
set PATH=%PATH%;C:\Users\Administrator\AppData\Roaming\npm;C:\Users\Administrator\AppData\Roaming\npm\node_modules\@angular\cli\bin;
ng build --prod --aot=true

答案 4 :(得分:0)

如果它在本地命令提示符下运行,请重新启动Jenkin服务器。

重新启动Jenkins-> http://host-name:port/base-url/restart

                ex:- http://localhost:8080/jenkins/restart

如果它不适用于本地命令,请全局安装角度CLI并设置环境设置并执行上一步。

答案 5 :(得分:0)

尝试如下。

BUILD_ID = dontKillMe不提供服务