diff --git a/core/lib/Drupal/Core/Asset/LibraryDiscoveryParser.php b/core/lib/Drupal/Core/Asset/LibraryDiscoveryParser.php
index 1091e6a..9798bc9 100644
--- a/core/lib/Drupal/Core/Asset/LibraryDiscoveryParser.php
+++ b/core/lib/Drupal/Core/Asset/LibraryDiscoveryParser.php
@@ -132,6 +132,11 @@ public function buildByExtension($extension) {
         //   and only once prior to rendering out an HTML page.
         if ($type == 'css' && !empty($library[$type])) {
           foreach ($library[$type] as $category => $files) {
+            // Allow empty categories.
+           if (defined('CSS_' . strtoupper($category)) && empty($files)) {
+              unset($library[$type][$category]);
+              continue;
+            }
             if (empty($files)) {
               throw new InvalidCssDefinitionException(sprintf("Every CSS asset must be nested under a SMACSS category in the %s.library.yml file ('%s' seems to be a file name, allowed categories are Base, Layout, Component, State, Theme)", $extension, $category));
             }
diff --git a/core/tests/Drupal/Tests/Core/Asset/LibraryDiscoveryParserTest.php b/core/tests/Drupal/Tests/Core/Asset/LibraryDiscoveryParserTest.php
index 77bea22..0e424e5 100644
--- a/core/tests/Drupal/Tests/Core/Asset/LibraryDiscoveryParserTest.php
+++ b/core/tests/Drupal/Tests/Core/Asset/LibraryDiscoveryParserTest.php
@@ -231,6 +231,24 @@ public function testBuildByExtensionWithInvalidCSSCategory() {
   }
 
   /**
+   * Tests that no exception is thrown when an empty CSS category exists.
+   *
+   * @covers ::buildByExtension
+   */
+  public function testBuildByExtensionWithEmptyCSSCategory() {
+     $this->moduleHandler->expects($this->atLeastOnce())
+       ->method('moduleExists')
+       ->with('css_empty_category')
+       ->will($this->returnValue(TRUE));
+
+     $path = __DIR__ . '/library_test_files';
+     $path = substr($path, strlen($this->root) + 1);
+     $this->libraryDiscoveryParser->setPaths('module', 'css_empty_category', $path);
+
+     $this->assertSame($this->libraryDiscoveryParser->buildByExtension('css_empty_category'), array());
+   }
+
+   /**
     * Tests the version property, and how it propagates to the contained assets.
     *
     * @covers ::buildByExtension
