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

ng is not recognised as an internal or external command. Jenkins + Angular CLI

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

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

一个运行:npm install

第二个运行:ng build --prod

然后我构建 Jenkins,它运行 npm install 但失败 运行 ng build --prod 因为它说“'ng' 不被识别为内部或外部命令”。

我做错了什么吗?是否有另一种方法可以在 node_modules 文件夹上使用 angular cli,因此不需要使用服务器上安装的 angular cli。似乎 Angular CLI 只为我在服务器上的用户安装,而不是为 Jenkins 用来构建的用户安装。

PS:我在全局安装了 Angular CLI 使用:

npm i -g @angular/cli

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

npm run ng -- build 

这将 运行 来自您项目的本地版本 devDependencies

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

You can pass additional flags to ng just like that
run ng -- build --prod

详情请见 https://docs.npmjs.com/cli/run-script

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

以下是我用来 运行 我的 angular 从 Jenkins.The 成功构建的命令 最后一个命令是通过设置路径变量以肮脏的方式执行的。不知道是否有更清洁的方法来做到这一点。这确实正确地执行了命令而没有遗漏任何东西。

@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

只是为了进一步说明当有人搜索相同的问题并找到这个问题时(就像我一样):

如果你想在 运行 构建命令时使用 --prod 标志,如这个问题中所问,你可以使用:

npm run ng -- build --prod

重要的是 "ng" 和 "build" 之间的“--”有间距。这是由于 "npm run" 的语法,可以在此处找到更多信息:https://docs.npmjs.com/cli/run-script

这也解决了已接受答案下方评论中描述的问题:"This is working but its excluding the additional parameters like --test when running the build"

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

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

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

如果它在本地命令上不起作用,请全局安装 angular CLI 并设置环境设置并执行上一步。

尝试如下。

BUILD_ID=dontKillMe nohup ng serve

npm run ng -- build 

我们可以不用安装angular cli