If you're like me, one of the first things you do when starting a new web application project is set up a CSS alternative such as LESS or SASS/SCSS. Those who aren't particularly fond of JavaScript might also tend to add CoffeeScript. These "metalanguages" can assist in making client-side/asset code more pleasurable to work with, as they typically provide functionality that's "missing" in the the languages they get interpreted into.

Some frameworks (e.g. Ruby on Rails) give you support for these alternatives out-of-the-box, but in the land of less opinionated software things can require a bit more work. Since I am personally a fan of the Pyramid web framework, I've used the pyramid_webassets and pyramid_fanstatic packages in the past to provide this support. However, these packages are so powerful and comprehensive that they can also tend to be somewhat involved in regards to configuration, so I recently decided to roll my own Pyramid add-on: pyramid_assetmutator

Although definitely not as "feature-full" as the packages I have mentioned earlier, as of this writing it provides the following:

  • Support for piping (a.k.a "mutating") assets through pretty much any command you like (its core functionality is quite rudimentary).
  • The ability to specify whether to have your assets "mutated" during each request, or on each "application boot" (typically best for prod setups).
  • Partial support for template language parsing in your asset files (e.g. Mako or Jinja2 template tags in your JavaScript or CSS files).
  • A unified Python 2/3 codebase.

Feel free to check it out on GitHub or browse the documentation, and share here or open a GitHub issue if you have any comments or suggestions.


comments powered by Disqus