Managing CSS and JavaScript files in Drupal 8 with Libraries

Experience level: 
Intermediate
Session Track: 

Front-end, User Experience and Design

This track covers delivering projects focused on the most important audience—the end user. Learn how to leverage Drupal to help you keep abreast of emerging trends in the mobile, componentized Web world. We’ll show you strategies for fostering collaboration between content creators, designers, strategists, and end-users.

Speaker(s): 

Drupal 8 revolutionizes the theming experience with many significant improvements to make theming easier, and give themers the flexibility and control they've never had before. One of those major improvements is to the library management system, which controls the attaching of CSS and JavaScript files.

In this session we will cover how to create and control libraries from a theme. This will include SMACSS categorization for CSS files, dependencies, how to conditionally attach libraries, manipulating libraries that come from anywhere in a site (core, modules, or base themes,) and targeting individual files for removal or replacement. All this without needing a single line of PHP.

Experience Level
While the topics covered are not difficult, it would be helpful for attendees to have some prior experience theming in Drupal. We will discuss some of the challenges faced managing CSS and JavaScript in previous version of Drupal, and how Drupal 8 aims to solve them. The majority of the code displayed is in YAML format, or from Twig. It is not difficult to understand for a beginner, but some prior knowledge will help.

Takeaways
After this session, attendees should feel comfortable managing assets (CSS and JavaScript files) in Drupal 8 for the majority of use cases. 

Speaker Experience
I have spoken three times at DrupalCon. I have spoken multiple times at DrupalCamp NJ, been on a Drupal Association webcast, and a Modules Unraveled podcast. I also speak frequently at meetups.

This particular session I partly gave at the last DrupalCampNJ in January. It is a subsection of my talk on Drupal 8 theming that I am expanding in greater detail so that I can show more code examples, real world scenarios, and results.

https://www.drupal.org/u/davidhernandez

See also this blog post I've written on the topic, which is the basis for a lot of the information contained in the talk - https://ffwagency.com/blog/managing-css-and-javascript-files-drupal-8-libraries