У меня проблемы с развертыванием моего сайта Hugo с помощью Netlify. Я хочу скомпилировать свои статические ресурсы (Sass и JS) с помощью Webpack перед развертыванием, и я генерирую хэши для очистки кеша, которые hugo необходимо прочитать перед созданием страниц. Следовательно, yarn run build
необходимо завершить работу до вызова hugo
. Однако, судя по журналам развертывания Netlify, этого не происходит.
Netlify: Как последовательно запускать задачи сборки?
Ответы (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
yarn run build && hugo
- это точная команда, которая у меня есть, но я все еще сталкиваюсь с проблемой, описанной выше.
- person Erik Berkun-Drevnig; 07.08.2017
Чтобы быть уверенным, что задачи 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
команды в оболочке.