Джанго на 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.

Другие вопросы по тегам