Netlify: Как последовательно запускать задачи сборки?

У меня проблемы с развертыванием моего сайта Hugo с помощью Netlify. Я хочу скомпилировать свои статические ресурсы (Sass и JS) с помощью Webpack перед развертыванием, и я генерирую хэши для очистки кеша, которые hugo необходимо прочитать перед созданием страниц. Следовательно, yarn run build необходимо завершить работу до вызова hugo. Однако, судя по журналам развертывания Netlify, этого не происходит.


person Erik Berkun-Drevnig    schedule 05.08.2017    source источник


Ответы (2)


отказ от ответственности: я работаю на netlify.

Ответ Джессики почти наверняка лучше для вашего варианта использования, но в целом, если люди не используют такие инструменты, как gulp / grunt / make (параметры в среде сборки в основном - это «все, что вы можете запустить в Linux» - см. https://www.netlify.com/blog/2016/10/18/how-our-build-bots-build-sites/), вы можете просто объединить команды в цепочку:

yarn run build && hugo

Обязательно используйте «&&» для связывания команд - это не только запустит их последовательно, но и гарантирует, что проблема в сборке пряжи приведет к тому, что сборка будет помечена как сбой, а не запускать hugo в любом случае и потенциально публиковать сломанная сборка, как если бы вы использовали

yarn run build ; hugo
person fool    schedule 06.08.2017
comment
yarn run build && hugo - это точная команда, которая у меня есть, но я все еще сталкиваюсь с проблемой, описанной выше. - person Erik Berkun-Drevnig; 07.08.2017
comment
@ ErikBerkun-Drevnig, значит, что-то еще не так. Извините, я не видел этого до сих пор, но служба поддержки может помочь отладить это. - person fool; 18.09.2017
comment
@fool, это сработало, как вы описали - person Carlos Morales; 11.12.2020

Чтобы быть уверенным, что задачи Webpack, вызываемые yarn run build, завершаются перед вызовом hugo, я рекомендую добавить инструмент сборки конвейера, например Gulp. Шаблон Виктора Гюго использует именно эту настройку. В извлечении это выглядит так:

В пакете package.json команда build определена для вызова gulp build:

  "scripts": {
    ...
    "build": "gulp build",
    ...
  }

Это запускает gulpfile.babel.js, который определяет build задачу как набор из трех подзадач в следующем порядке:

gulp.task("build", ["css", "js", "hugo"]);

Эти подзадачи также определены в файле gulpfile. В этом случае css определяется для запуска PostCSS, а js - для запуска Webpack. Вы должны определить их, чтобы они соответствовали вашему конвейеру ресурсов, импортируя любые плагины, которые вам нужны, в верхней части файла.

Для задачи hugo Виктор Гюго включает двоичный файл Hugo непосредственно в репо, что способствует переносимости. Кроме того, вы можете следовать этому примеру и использовать gulp-shell плагин для запуска hugo команды в оболочке.

person Jessica Parsons    schedule 06.08.2017
comment
Я также хотел бы спросить, почему вы считаете, что вам нужна очистка кеша. Если вы не измените директивы кеширования, переопределив наши значения по умолчанию, Netlify обработает недействительность кеша за вас и действительно хорошо с этим справится. netlify.com/blog/2017/02/23 / better-living-through-caching описывает, как это сделать. - person fool; 06.08.2017
comment
Я думаю, что это лучшее решение / ответ, потому что оно не ограничивает оболочку, которую вы используете в случае пользователей Windows для разработки. - person talves; 12.09.2017
comment
@fool, можешь ли ты объяснить, что в данном случае подразумевается под очисткой кеша? - person talves; 12.09.2017
comment
@talves, я имел в виду то, что упомянул OP, что-то вроде keycdn.com/ support / what-is-cache-busting. Netlify делает некоторые вещи, чтобы сделать это ненужным: netlify. com / blog / 2017/02/23 / better-living-through-caching - person fool; 18.09.2017