我在Windows 8计算机上从命令行运行Grunt时遇到问题.
我的研究表明,最常见的解决方案是安装grunt-cli,因为Grunt不再是全球性的.我还需要确保我实际安装了Grunt任务运行器,因为它没有安装grunt-cli.
其他解决方案指向PATH系统环境变量,但这看起来像我期望的那样:
C:\用户[用户名] \应用程序数据\漫游\ NPM
完成所有这些后,我仍然在CLI中将"'grunt'识别为内部或外部命令,可操作程序或批处理文件"错误消息.我尝试过以下方法,每次尝试后卸载所有内容:
我错过了一些明显的东西吗
使用npm在全局安装grunt-cli时遇到错误.这与lodash有关:
npm WARN deprecated lodash@2.4.2:
lodash@<3.0.0 is no longer maintained. Upgrade to lodash@^3.0.0.
Run Code Online (Sandbox Code Playgroud)
以下是我正在使用的版本以及安装的全局包列表.
node: v5.1.0
npm: v3.5.0
npm list -g: http ://pastebin.com/NuJU3bY0
我试图在全局安装最新版本的lodash(v3.10.1),但在卸载我的grunt-cli全局包后再次出现错误,然后重新安装我的全局包.以下是安装日志:
sudo npm install lodash -g
/usr/local/lib
??? lodash@3.10.1
sudo npm install grunt-cli -g
npm WARN deprecated lodash@2.4.2:
lodash@<3.0.0 is no longer maintained. Upgrade to lodash@^3.0.0.
/usr/local/bin/grunt -> /usr/local/lib/node_modules/grunt-cli/bin/grunt
/usr/local/lib
??? grunt-cli@0.1.13
??? findup-sync@0.1.3
? ??? glob@3.2.11
? ? ??? inherits@2.0.1
? ? ??? minimatch@0.3.0
? ? ??? lru-cache@2.7.3
? ? ??? sigmund@1.0.1
? ??? lodash@2.4.2 …Run Code Online (Sandbox Code Playgroud) 我在Windows Server 2008 R2上安装了Jenkins v1.550.它暂时作为服务运行http://localhost:8080.我以管理员身份登录计算机.我已经安装了Node.js,可以从命令行运行"npm".
我还为Jenkins安装了NodeJS插件v0.2.1.然后我进入Jenkins的Configure System部分,向下滚动到NodeJS安装,单击Add NodeJS按钮,将"NodeJS"作为名称,并将"C:\ Program Files \nodejs"作为安装目录的路径.我没有检查"自动安装"选项,因为我在插件页面上看到它只适用于Linux.
然后我创建了一个新工作,单击了"将节点和npm bin /文件夹提供给PATH"的复选框,为"执行Windows批处理命令"创建了一个新的构建步骤,并输入"node --version"和"grunt - 版本"并保存.
我跑了工作,这是输出 -
Building in workspace C:\Program Files (x86)\Jenkins\workspace\Test_1.0
[Test_1.0] $ cmd /c call C:\Windows\TEMP\hudson1381541243088903083.bat
C:\Program Files (x86)\Jenkins\workspace\Test_1.0>node --version
v0.10.24
C:\Program Files (x86)\Jenkins\workspace\Test_1.0>grunt --version
'grunt' is not recognized as an internal or external command,
operable program or batch file.
C:\Program Files (x86)\Jenkins\workspace\Test_1.0>exit 9009
Build step 'Execute Windows batch command' marked build as failure
Finished: FAILURE
Run Code Online (Sandbox Code Playgroud)
看起来它无法找到Jenkins在(System)下运行的用户帐户的grunt-cli.我试图安装grunt cli global(npm install -g grunt-cli …
这是一个用于"干净"任务的GruntFile示例(使用grunt-contrib-clean插件):
clean: {
dry: {
src: ["build/css"],
options: {
'no-write': true
}
}
}
Run Code Online (Sandbox Code Playgroud)
跑步grunt clean:dry会输出:
Running "clean:dry" (clean) task
>> 2 paths cleaned.
Done, without errors.
Run Code Online (Sandbox Code Playgroud)
使用grunt clean:dry -v,给我我想要的东西:
Running "clean:dry" (clean) task
Not actually cleaning live/css...
Not actually cleaning live/js...
Run Code Online (Sandbox Code Playgroud)
...但它还显示了一堆与当前任务无关的配置日志.我可以使用--verbose标志(或其他)来显示任务的完整输出,而无需滚动浏览所有不相关的配置日志吗?
PS:我的其他插件遇到同样的问题,当他们的文档表明我应该期待更多时,只显示一行输出.
(相关问题:从grunt-contrib-jasmine中记录,如何强制在grunt中运行的JSHint始终使用--verbose标志不回答这个问题).
我正在尝试使用Azure的Git部署来构建和打包我的项目.
我创建了以下文件
我跟随杰伊哈里斯的博客文章.下面给出了deploy.cmd文件中的部署部分:
:: 2. Select node version
call :SelectNodeVersion
:: 3. Install npm packages
IF EXIST "%DEPLOYMENT_TARGET%\package.json" (
pushd "%DEPLOYMENT_TARGET%"
call :ExecuteCmd !NPM_CMD! install --production
IF !ERRORLEVEL! NEQ 0 goto error
popd
)
:: 4. Install bower packages
IF EXIST "%DEPLOYMENT_TARGET%\bower.json" (
call !NPM_CMD! install bower
IF !ERRORLEVEL! NEQ 0 goto error
call .\node_modules\.bin\bower install
IF !ERRORLEVEL! NEQ 0 goto error
)
:: 4. run grunt
IF EXIST "%DEPLOYMENT_TARGET%\Gruntfile.js" (
call !NPM_CMD! …Run Code Online (Sandbox Code Playgroud) 我在我们的TFS构建服务器上安装了npm和grunt.我使用npm install -g grunt-cli安装了grunt-cli,然后在以我自己的身份登录时能够从命令行运行grunt deploy.
Out TFS版本作为tfsservice用户运行,当它尝试执行grunt部署时,它会收到一条错误消息:
'grunt' is not recognized as an internal or external command, operable program or batch file.
Run Code Online (Sandbox Code Playgroud)
所以,当我在构建服务器上以我自己的身份登录时,如果我将命令提示符作为tfsservice运行,我会得到相同的错误.所以我尝试从命令提示符下执行npm install -g grunt-cli,它看起来已经正确安装并在C:\ Users\tfsservice\AppData\Roaming \npm中创建了grunt文件,但是后来我仍然得到了同样的错误当运行grunt部署时.
所以看起来grunt-cli没有为tfsservice安装?当我得到tfsservice%homepath%时,我看到它被设置为\ Windows\system32,而不是预期的\ Users\tfsservice ; 也许这是一个服务帐户与它有关?
我看到类似的问题已被要求在团队城市中使用grunt-cli,但它建议使用Team City特定的插件.
还有这篇帖子说他们改变了Team City作为一个不同的用户运行,然后一切都开始正常工作.尽管如此,将我们的构建更改为以不同于tfsservice的用户身份运行并不是一个真正的选择.
任何建议表示赞赏.谢谢.
我已经通过grunt网站上的安装说明在我的服务器上安装了grunt.
使用 npm install -g grunt-cli
但是我仍然可以让我的控制台识别grunt命令.我可以在我的系统变量路径目录中看到任何链接,所以我猜这可能是问题.有谁知道路径目录中应该有什么让控制台拿起grunt命令.
任何帮助都会很棒,我的机器上的Windows服务器上只有问题就好了.
错误是
术语"grunt"不被识别为cmdlet,函数,脚本文件或可操作程序的名称;
干杯