Cal*_*res 23 command-line gruntjs
我正在尝试运行一个简单的操作,gruntfile.js作为我在TeamCity中构建的一部分.但是,即使在将grunt和grunt-cli安装为全局节点包之后,TeamCity仍然无法识别它们.我可以输入grunt命令行并且它可以工作,但是当我在TeamCity中通过命令行运行程序或带参数的可执行文件运行它时,它仍然给出
'grunt' is not recognized as an internal or external command
我还尝试安装TeamCity.Node,这是一个用于运行grunt脚本的插件,但它也找不到grunt.有任何想法吗?
Chr*_*her 33
我无法获得可接受的解决方案.对我来说问题是TeamCity服务(服务器和代理)在系统帐户下运行.AFAIK,没有"为操作系统的所有用户全局安装npm包"的概念.所以我:
从那里开始,NodeJS,NPM和Grunt任务刚刚开始工作.
Zek*_* Lu 14
这是克里斯托弗答案的补充(我没有足够的声誉来发表评论).
如果您不想在构建服务器上创建用户,可以编写完整路径来执行npm包.这是一个命令行运行器来运行Weyland而无需在构建服务器上创建专用用户:
"C:\Program Files\nodejs\node.exe"c:\users\Administrator\AppData\Roaming\npm\node_modules\weyland\bin\cli.js build顺便说一下,似乎Node.js的安装程序有另一个解决方案.不幸的是,它被修剪了!
以下是Node.js安装程序的屏幕截图:

当我尝试使用TFS工作时,我遇到了同样的问题,它将由tfsservice用户运行.像Christopher的回答所说的那样,以不同的用户身份运行我们的构建对我们来说不是一个选择.在我将t:\ Users\tfsservice\AppData\Roaming \npm添加到tfsservice用户的路径后,当我手动以tfsservice身份登录时,它能够找到grunt-cli,但是在TFS Build代理执行构建时却找不到.起初我刚刚更改了构建过程以使用grunt.cmd文件的完整路径.
所以我改变了使用它:
grunt deploy
Run Code Online (Sandbox Code Playgroud)
使用这个:
"C:\Users\tfsservice\AppData\Roaming\npm\grunt.cmd" deploy
Run Code Online (Sandbox Code Playgroud)
我想为你的Team City用户做同样的事情也可以解决问题.当然,如果您这样做,您必须确保grunt-cli安装在所有构建服务器上的相同位置.
事实证明,我刚刚错过了重新启动我的PC的最后一步(以便tfsservice将重新启动),然后构建能够找到grunt而不指定完整路径.
我假设Zeke Lu的答案所显示的修剪后的node.js安装程序描述将说明其他用户需要更新其Path环境变量.
| 归档时间: |
|
| 查看次数: |
21160 次 |
| 最近记录: |