Как запустить задачу Gulp на Netlify

Привет, я пытаюсь запустить задачу gulp на netlify для создания сети Hugo.

Интересно, как запустить задачу последовательного глотка на 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/./'))
});

где я должен поместить команду для запуска всех моих задач gulps в Netlify?


person Yudy Ananda    schedule 30.01.2018    source источник


Ответы (3)


В 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 перезапишут команду администратора сайта.
person talves    schedule 30.01.2018
comment
спасибо, как я упоминал ранее, я также собираю Hugo в то же время, поэтому, если я установлю netlify.toml и команду на консоли netlify в gulp build, как будет собираться мой Hugo? поток, которого я хочу достичь, - это установить какой-нибудь глоток, собрать Hugo, а затем запустить задачу глотка. - person Yudy Ananda; 31.01.2018
comment
В вашем исходном вопросе нет упоминания о netlify.toml. Также ваш ответ основан на неправильном представлении о том, как процесс развертывания работает на netlify. Нет причин устанавливать зависимости, это делается за вас как часть развертывания, когда Netlify запускает процесс. - person talves; 31.01.2018
comment
Те же самые команды, которые вы используете локально для создания рабочего сайта Hugo, должны использоваться в ваших командах сборки на Netlify в соответствии с рекомендациями. Это поможет вам протестировать все команды перед развертыванием. - person talves; 31.01.2018

Вы можете объединить свои задачи следующим образом:

добавьте еще один плагин с 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/

person Greg    schedule 30.01.2018
comment
Я бы избегал gulp.start по разным причинам - во-первых, это не документированная часть плагина. Посмотрите на npmjs.com/package/run-sequence и поместите операторы return во все ваши задачи или у вас будут проблемы. - person Mark; 30.01.2018
comment
@Mark: я исправил ответ и кое-что узнал в процессе - спасибо! - person Greg; 30.01.2018
comment
@Greg спасибо за ответ, но я имею в виду, что мне нужен шаг для запуска задачи gulp на netlify, а не в моей локальной среде. - person Yudy Ananda; 30.01.2018

Я нашел ответ, поэтому я думаю, что это может быть полезно для тех, кто хочет собрать Hugo и выполнить задачу gulp в Netlify.

Решение

  1. измените команду в netlify.toml с hugo на npm run gulptask или назовите ее как хотите

  2. добавьте скрипты в package.json с вашей задачей

Например

"scripts": {
  "gulptask": "hugo; gulp templates",
},
person Yudy Ananda    schedule 31.01.2018
comment
Это не даст надежных результатов. Объединение команд с помощью ; позволяет ранним командам (например, npm install, что, как говорит @talves выше, вам не нужно делать, если у вас есть права на установку package.json), а затем более поздним задачам (шаблоны gulp) для успешного выполнения - это означает, что мы опубликуем сломанный сайт. Всегда связывайте с &&, а также исправьте свой package.json, чтобы вам не требовался шаг установки npm) - person fool; 01.02.2018
comment
спасибо, что напомнили мне, я удалил npm install из своей задачи, но все еще использую ;, и он успешно развернут, но когда я меняю цепочку на &&, это не удается, есть предложения? - person Yudy Ananda; 01.02.2018