Skip to content

Latest commit

 

History

History
51 lines (41 loc) · 1.49 KB

css-ordering.md

File metadata and controls

51 lines (41 loc) · 1.49 KB

Traditionally, you would manually list all your CSS files into a concatenation step like so:

@import "normalize.css"
@import "reset.css"
@import "type.css"
@import "layout.css"
@import "buttons.css" /* depends on type.css */
@import "asides.css"
@import "aside-buttons.css" /* depends on buttons.css and asides.css*/

However, this is unmanageable with a lot of CSS files as you are prone to ordering mistakes and duplicates. It is also difficult to understand which CSS files are dependent on other CSS files, as demonstrated by the comments.

Thus, with Component, you can split each CSS file into its own separate component, perhaps with relevant JS files, like this:

aside-buttons:

{
  "locals": [
    "buttons",
    "asides"
  ],
  "scripts": ["*.js"],
  "styles": ["*.css"]
}

locals means local dependencies. By listing buttons and asides as local dependencies, Component will guarantee that buttons and asides are placed before aside-buttons in the CSS build.

Then in your boot component, you simply list all the components, placing dependencies you need at the top first:

{
  "dependencies": {
    "necolas/normalize.css": "*"
  },
  "locals": [
    "reset",
    "type",
    "layout",
    "buttons",
    "asides",
    "aside-buttons"
  ]
}

Component will now handle the CSS ordering itself, so you don't have to worry about whether CSS files are included twice or are in the wrong or right order. The only downside to this is that it is a little verbose.