微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

gulpfile.js 不在 Azure VSBuild 上运行

如何解决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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?