如何在Netlify上运行Gulp任务

如何在Netlify上运行Gulp任务,gulp,hugo,netlify,Gulp,Hugo,Netlify,嗨,我正试着在netlify上运行一些构建Hugo web的任务 我想知道如何在netlify上运行串行吞咽任务 顺便说一下,这是我的gulpfile.js var gulp = require('gulp'); var removeEmptyLines = require('gulp-remove-empty-lines'); var prettify = require('gulp-html-prettify'); var rm = require( 'gulp-rm' ); var min

嗨,我正试着在netlify上运行一些构建Hugo web的任务

我想知道如何在netlify上运行串行吞咽任务

顺便说一下,这是我的gulpfile.js

var gulp = require('gulp');
var removeEmptyLines = require('gulp-remove-empty-lines');
var prettify = require('gulp-html-prettify');
var rm = require( 'gulp-rm' );
var minifyInline = require('gulp-minify-inline');

gulp.task('tojson', function () {
  gulp.src('public/**/*.html')
  .pipe(removeEmptyLines())
  .pipe(gulp.dest('public/./'));
});

gulp.task('htmlClean', function () {
  gulp.src('public/**/*.html')
  .pipe(removeEmptyLines({
    removeComments: true
  }))
  .pipe(gulp.dest('public/./'));
});

gulp.task('templates', function() {
  gulp.src('public/**/*.html')
    .pipe(prettify({indent_char: ' ', indent_size: 2}))
    .pipe(gulp.dest('public/./'))
});

gulp.task('minify-inline', function() {
  gulp.src('public/**/*.html')
    .pipe(minifyInline())
    .pipe(gulp.dest('public/./'))
});

我应该把命令放在哪里才能在Netlify中运行我的所有吞咽任务?

您可以像这样将任务串在一起:

使用NPM添加另一个插件:

然后喝一大口

本页中有一个关于运行顺序的部分将提供帮助:

在Netlify中有两个地方可以设置构建命令

管理选项 将命令放在网站“设置”部分的“联机管理”中,然后转到“生成和部署”(部署设置)并更改生成命令:

Netlify配置文件(Netlify.toml)选项 编辑/添加一个
netlify.toml
文件到存储库的根目录中,并将构建命令放入您想要的目标上下文中

netlify.toml

# global context
[build]
  publish = "public"
  command = "gulp build"
# build a preview (optional)
[context.deploy-preview]
  command = "gulp build-preview"
# build a branch with debug (optional)
[context.branch-deploy]
  command = "gulp build-debug"
注意:

  • 命令可以是任何有效的命令字符串。如果您不想创建一个gulp序列来运行gulp命令,那么序列化gulp命令就可以了。在示例中,
    gulphtmlclean&&hugo&&gulptojson
    将是一个有效的命令
  • netlify.toml
    中的命令将覆盖站点管理命令

我找到了一个答案,所以我认为这可能会对那些想要在Netlify中构建Hugo并执行吞咽任务的人有所帮助

解决办法是

  • netlify.toml中的命令从
    hugo
    更改为
    npm-run-gulptask
    ,或者用您想要的任何名称命名它

  • 在任务中添加package.json中的脚本

  • 比如说

    "scripts": {
      "gulptask": "hugo; gulp templates",
    },
    

    出于各种原因,我会避免使用gulp.start,而不是插件的文档部分。请改为查看并在所有任务中添加返回语句,否则您将遇到问题。@Mark:我更正了答案,并在过程中学到了一些东西-谢谢@Greg谢谢你的回答,但我的意思是我需要在netlify上运行gulp任务,而不是在我的本地环境中。谢谢你,正如我之前提到的,我也在同一时间构建Hugo,所以如果我将
    netlify.toml
    和netlify控制台上的命令设置为
    gulp build
    我的Hugo将如何构建?我想实现的流程是安装一些gulp,构建hugo,然后运行gulp任务。在您最初的问题中没有提到
    netlify.toml
    。另外,您的答案是基于对netlify上部署过程如何工作的误解。没有理由安装依赖项,这是在Netlify启动流程时作为部署的一部分为您完成的。在Netlify上的构建命令中应使用本地用于构建生产Hugo站点的相同命令,以获得最佳实践。这将帮助您在部署之前测试所有命令。这不会产生可靠的结果。将命令链接到“;”允许早期命令(例如,npm安装,如@talves所述,如果您有package.json安装权限,则无需执行此操作)失败,然后后续任务(gulp模板)成功-这意味着我们将发布一个损坏的站点。始终使用&&链接,但也要-修复你的package.json,这样你就不需要npm安装步骤)谢谢你提醒我,我从任务中删除了npm安装,但仍然使用
    成功部署,但当我将链更改为
    &&
    失败时,有什么建议吗?
    "scripts": {
      "gulptask": "hugo; gulp templates",
    },