我正在尝试为Angular CLI项目设置Jenkins。我在特定用户帐户下的Jenkins服务器上安装了node和Angular Cli。 如果我在服务器上打开命令提示符,则执行以下命令以验证它们是否已正确安装,结果如下:
我已经使用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
答案 0 :(得分:7)
无需在服务器上安装angular cli,只需运行
即可npm run ng -- build
这将运行项目devDependencies
这样您就可以将任何旗帜传递给您的本地cli npm run ng -- test
,npm 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)
尝试如下。