【问题标题】:How to Run Gulp Task on Netlify如何在 Netlify 上运行 Gulp 任务
【发布时间】:2018-01-30 07:32:56
【问题描述】:

您好,我正在尝试在 netlify 上运行一些 gulp 任务以构建 Hugo 网络。

我想知道如何在 netlify 上运行串行 gulp 任务,

顺便说一下,这是我的 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 中我应该将命令放在哪里运行我的所有 gulps 任务?

【问题讨论】:

    标签: gulp hugo netlify


    【解决方案1】:

    在 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 htmlClean && hugo && gulp tojson 将是一个有效命令。
    • netlify.toml 中的命令将覆盖站点管理命令。

    【讨论】:

    • 谢谢,正如我之前提到的,我也同时构建了 Hugo,所以如果我将 netlify.toml 和 netlify 控制台上的命令设置为 gulp build,我的 Hugo 将如何构建?我想要实现的流程是安装一些 gulp,构建 hugo 然后运行 ​​gulp 任务。
    • 原始问题中没有提到netlify.toml。此外,您的答案是基于对部署过程如何在 netlify 上工作的误解。没有理由安装依赖项,这是在 Netlify 启动过程时作为部署的一部分为您完成的。
    • 应该在 Netlify 上的构建命令中使用与您在本地构建生产 Hugo 站点相同的命令,以获得最佳实践。这将帮助您在部署之前测试所有命令。
    【解决方案2】:

    你可以像这样把你的任务串起来:

    使用 NPM 添加另一个插件: https://www.npmjs.com/package/run-sequence

    var runSequence = require('run-sequence');
    
    gulp.task('default', function (callback) {
      runSequence(['tojson', 'htmlClean', 'templates', 'minify-inline'],
        callback
      )
    })
    

    然后运行 ​​$gulp

    此页面上有一个关于运行序列的部分会有所帮助: https://css-tricks.com/gulp-for-beginners/

    【讨论】:

    • 出于各种原因,我会避免 gulp.start - 不是插件的文档部分。请查看npmjs.com/package/run-sequence 并将return 语句放在所有任务中,否则您会遇到问题。
    • @Mark:我更正了答案并在此过程中学到了一些东西-谢谢!
    • @Greg 感谢您的回答,但我的意思是我需要一步才能在 netlify 上运行 gulp 任务,而不是在我的本地环境中。
    猜你喜欢
    • 2018-01-13
    • 1970-01-01
    • 2020-07-30
    • 2017-03-13
    • 1970-01-01
    • 2015-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多