Джанго на Heroku, проблема с Yuglify и CollectStatic
Я использую Django-Pipeline, чтобы минимизировать мой JavaScript. Когда я отправляю свой проект в Heroku и CollectStatic, он выдает ошибку
pipeline.exceptions.CompressorError: /usr/bin/env: yuglify: No such file or directory
Но когда я запускаю CollectStatic вручную, Yuglify запускается без проблем. Я не могу выяснить проблему. Какой код я должен показать вам, ребята, в этой ситуации?
2 ответа
Моим решением было добавить часть "yuglify" в кодовую базу здесь: https://github.com/nigma/heroku-django-cookbook
Вот мой код:
бен /install_yuglify
#!/usr/bin/env bash
set -eo pipefail
npm install -g yuglify
Затем добавьте следующее в bin/post_compile (около строки 23...)
if [ -f bin/install_yuglify ]; then
echo "-----> Running install_yuglify"
chmod +x bin/install_yuglify
bin/install_yuglify
fi
И тебе должно быть хорошо идти:)
Вы можете увидеть мой код здесь, для справки: https://github.com/GK-12/rpi_csdt_community/tree/master/bin
Удачи!
Мне удалось решить проблему с менее болезненным решением. Heroku предоставляет вам пакеты сборки, которые на самом деле являются средой, на которой собираются ваши приложения. По умолчанию у вас есть пакет сборки Python. Вот почему система может запускать такие команды, как python manage.py.... Мое решение заключается в следующем: 1) Установите пакет сборки nodejs в качестве первого пакета сборки.
heroku buildpacks:add --index 1 heroku/nodejs
2) Добавьте package.json по тому же пути, что и require.txt. 3) В package.json добавьте зависимость yuglify.
Другое решение - изменить ваши сжатия и использовать написанное на Python.
PIPELINE['CSS_COMPRESSOR'] = 'pipeline.compressors.cssmin.CSSMinCompressor'
PIPELINE['JS_COMPRESSOR'] = 'pipeline.compressors.jsmin.JSMinCompressor'
pip install cssmin jsmin
У меня нет четкого мнения, что лучше jsmin или yuglify.