Necesito proporcionar algo de contexto antes de hacer la pregunta:
CONTEXTO
Tengo una aplicación de Phoenix que se está implementando en Heroku . De manera predeterminada, Brunch se utiliza para compilar activos estáticos como .js , .css e imágenes.
./assets (a partir de Phoenix 1.3 )../priv/static/ . El proceso de compilación genera un cache_manifest.json , después de que los activos se digieran utilizando la huella digital MD5 .
Tal vez sea importante notar que estoy usando la versión gratuita de CloudFlare como CDN.
No me preocupan los activos subidos por el usuario , estoy hablando de los activos de la aplicación
Parte relevante de las aplicaciones config/prod.exs
config :bespoke_work, BespokeWork.Web.Endpoint, on_init: {BespokeWork.Web.Endpoint, :load_from_system_env, []}, http: [port: {:system, "PORT"}], url: [scheme: "https", host: System.get_env("HEROKU_HOST"), port: System.get_env("HEROKU_PORT")], static_url: [scheme: "https", host: System.get_env("STATIC_ASSETS"), port: 443], force_ssl: [rewrite_on: [:x_forwarded_proto]], cache_static_manifest: "priv/static/cache_manifest.json", secret_key_base: System.get_env("SECRET_KEY_BASE")```PREGUNTA
¿Cómo puedo evitar que Heroku cree los activos y, en su lugar, durante la implementación, cargue automáticamente los activos digeridos en un depósito de Amazon S3 ?
¿Eso hará que la babosa de Heroku sea más pequeña?
SOLUCIÓN POSIBLE
Reduciendo el tamaño de la babosa de Heroku :
• En la redirección de Procfile mix phx.digest para generar elementos digeridos en /dev/null .
o
• Redefinir mix deps.compile para Prod , sin generar los activos.
static_url para generar rutas que "apunten" al depósito de S3 .• ¿Hay alguna forma más sencilla de lograr esto? •
Esto no es realmente una buena idea... incluso podría considerarse un anti-patrón.
Pero, si por alguna razón, eso es absolutamente necesario, esta es una forma de hacerlo:
Heroku permite el uso de un archivo .slugignore para casos de uso básicos (como .pdf o .psd )
y/o
El paquete de compilación del limpiador de slug limpia los activos estáticos no necesarios después de que se hayan procesado.
• Esto debe hacerse a través de un script de shell.