ruby on rails - react - La mejor forma de combinar y minificar JS/CSS en Heroku
heroku react rails (8)
Aquí están las opciones de configuración para comprimir sus activos.
http://guides.rubyonrails.org/asset_pipeline.html#customizing-the-pipeline
config.assets.css_compressor = :yui
config.assets.js_compressor = :uglifier
config.assets.compress = true
gem ''uglifier''
gem ''yui-compressor''
En primer lugar, de acuerdo con esta respuesta , la opción :cache => true
en stylesheet_link_tag
y javascript_include_tag
no funciona en Heroku. ¿Es esto cierto? He encontrado :cache => true
para trabajar ocasionalmente, pero no siempre (¡raro!)
Además, ¿cuál es la mejor solución aquí? Idealmente, combinaría y miniaturizaría a la perfección todo CSS / JS. Heroku Asset Packager afirma hacer esto: ¿hay mejores opciones?
Descubrí que la adición de un gancho de precompilación de git que compila y empaqueta elementos, y luego los agrega a la confirmación actual es útil en este caso.
El mío que usa Jammit se ve así (en .git/hooks/pre-commit
):
jammit
rake barista:brew
git add public/assets/*
git add public/javascripts/*
De esta manera, todos sus bienes serán empacados para usted y ya no tendrá que preocuparse por eso.
El nombre del proyecto lo dice todo:
Es una forma diferente de administrar su CSS / Javascript, pero es posible que desee verificar la shoebox complemento Rails.
Shoebox puede combinar, minificar y almacenar en caché.
Estoy usando Jammit en Heroku. Funciona genial. Puedes construir tus activos localmente y registrarte en heroku. utilizar
jammit --force
la versión actual 0.5.1 tiene problemas para trabajar en heroku pero puedes instalar la versión fija desde git: //github.com/documentcloud/jammit.git
Si está utilizando Rails 3, especifique lo siguiente en su paquete Gemfile:
gem "jammit", :git => "git://github.com/documentcloud/jammit.git"
Para Rails 2. *
config.gem "jammit", :source => "git://github.com/documentcloud/jammit.git"
Buena suerte.
GitHub tiene una buena respuesta para esto, y estoy seguro de que podrías modificar las secuencias de comandos de implementación de Heroku para integrar:
http://github.com/blog/551-optimizing-asset-bundling-and-serving-with-rails
Probablemente haya varias formas de hacerlo, pero lo que funciona para mí es minimizar antes de presionar. Luego uso un subárbol para mantener mis archivos de compilación separados de los archivos "fuente". Entonces, por ejemplo, si construye en una carpeta llamada "dist", puede presionar a un subárbol llamado heroku / master como este:
git subtree push --prefix dist heroku master
Simplemente no se olvide de asegurarse de que no se ignore la carpeta dist (a menudo lo es, de forma predeterminada), por lo tanto, edite su archivo .gitignore en consecuencia.
El comando --prefix garantiza que la carpeta dist se convierta efectivamente en la carpeta "raíz" desde el punto de vista de esa rama.
Todavía no lo he probado en heroku, pero Sprockets podría ser bueno para eso. Además, en el pasado, he tenido más suerte con
:cache => ''all.css''
:cache => ''all.js''
en lugar de ''verdadero''