【发布时间】:2016-04-04 16:35:40
【问题描述】:
我是 gulp 的新手,在将它与 msbuild 集成时遇到了问题。我正在尝试使用 gulp 运行任务(例如:缩小文件),即使它在我构建项目时运行良好,但它无法在 msbuild 上运行。 这是 gulpfile.js 的代码:
var gulp=require("gulp"),
gutil=require("gulp-util"),
uglify=require("gulp-uglify"),
debug=require("gulp-debug"),
concat=require("gulp-concat");
var uglifycss = require('gulp-uglifycss');
gulp.task("js",function(){
gulp.src(["./**/*.js","!./**/*.min.*","!./**/gulpfile.js"])
.pipe(uglify())
.pipe(debug())
.pipe(gulp.dest(function(file){return file.base}));
gulp.task('css', function () {
gulp.src(["./**/*.css","!./**/*.min.*"])
.pipe(uglifycss())
.pipe(gulp.dest(function(file){return file.base}));
});
gulp.task("build",["js","css"]);
gulp.task('default', function(){
gulp.run('build');
});
这是由 powershell 脚本文件 compileClient.ps1 调用的:
npm install -g gulp
npm install --save-dev gulp gulp-util
npm install --save-dev gulp-uglify gulp-concat
npm install --save gulp-uglifycss
npm install --save-dev gulp-debug
gulp
npm install -g rimraf
cmd /c $env:APPDATA\npm\rimraf ./node_modules
当我在 cmd 上运行这个命令时,
"%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe" -file "$(ProjectDir)compileClient.ps1"
它可以正常工作并缩小目标文件。然后我尝试将此命令放在项目的构建后事件中,当我在 Visual Studio 本地运行它时,它也可以正常工作。
但是,当这个项目是由 msbuild 构建时,相同的构建后事件不起作用,它会给出以下消息,如下图所示: npm : the term 'npm' is not recognized as the name of a cmdlet..
我检查了节点设置的PATH变量,它是正确的。此外,当我在 cmd 上执行 node -v 时,我可以看到安装的节点版本,但是当我在 msbuild 命令行上执行此操作时,它无法识别节点。
我用这个博客作为参考 https://www.niclassahlin.com/2015/04/10/running-gulp-during-tfs-build/
感谢您就此事提供任何帮助/建议,谢谢。
【问题讨论】:
-
我想我知道究竟是什么导致了这个问题。 MSBuild 始终以管理员身份构建解决方案,但 nodejs 安装范围仅限于用户配置文件,所以现在我需要找到一种方法在管理员帐户中安装它。
标签: node.js tfs msbuild npm gulp