如何解决gulpfile.js 不在 Azure VSBuild 上运行
我有一个 .NET MVC 项目,它在每次构建 /// <binding AfterBuild='default' />
后执行 gulpfile.js。如果我在 Visual Studio 中本地构建项目,这很有效。但我必须在每次提交后在 Azure Pipeline 上设置自动构建。 VSBuild@1
任务成功完成,但 gulpfile.js 未执行。
gulpfile.js
/// <binding AfterBuild='default' />
'use strict'
//include gulp
var gulp = require('gulp'),//include plugins
templateCache = require('gulp-angular-templatecache'),rimraf = require('rimraf'),concat = require('gulp-concat'),uglify = require('gulp-uglify'),rename = require('gulp-rename'),gutil = require('gulp-util'),path = require('path');
//concatenate & minify JS Files
function scripts() {
return gulp.src([...])
.pipe(concat('main.js'))
.pipe(rename('main.min.js'))
.pipe(uglify())
.on('error',function (err) { gutil.log(gutil.colors.red('[Error]'),err.toString()); })
.pipe(gulp.dest('Build/js'))//put main.js in this folder
}
exports.scripts = scripts;
exports.default = gulp.series(scripts);
Azure 管道 yaml
trigger:
- develop
pool:
vmImage: 'windows-latest'
variables:
solution: '**/*.sln'
buildplatform: 'Any cpu'
buildConfiguration: 'Release'
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
- task: VSBuild@1
inputs:
solution: '$(solution)'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'
platform: '$(buildplatform)'
configuration: '$(buildConfiguration)'
解决方法
根据您的评论,您可以添加一个任务,只需在 gulp 构建之前执行 npm install:
steps:
- task: Npm@1
displayName: 'npm install'
inputs:
command: install
workingDir: '$(Build.SourcesDirectory)'
verbose: false
有关详细信息,请参阅主题:Azure DevOps gulp step fails with Local modules not found。
更新>> artifact 的目录是$(Build.ArtifactStagingDirectory),所以应该是D:\a\1\a。如果 js 文件未包含在工件中,则可以使用 Copy Files task 将 js 文件复制到 Publish Build Artifacts task 之前的此目录。
,我最终做的是让 Azure 将工件部署到我的网络服务器。然后我有一个批处理文件来解压缩并将构建的文件移动到 IIS 目录。然后在批处理文件中,我有以下内容:
CD <<IIS directory>>
npm install
gulp --gulpfile "path\to\gulpfile.js"
通过这种方式,它在部署到 IIS 时执行 gulfile.js 来合并和最小化 javascript 文件。它不适用于 Azure 管道的原因是它不在正确的目录中,无法找到 gulpfilejs 路径
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。