Bookshop provides helpers for writing SCSS styles alongside your components. While not required, this can help organize your component directory and keep components self-contained.
The Bookshop SCSS file#
The last files for us to cover from the @bookshop/init command we ran earlier are the SCSS files that were
created for us.
└── _component-library
├── components
│ └── sample
│ ├── sample.eleventy.liquid
│ ├── sample.bookshop.yml
│ └── sample.scss
└── shared
└── styles
└── global.scss_component-library
components
sample
- sample.eleventy.liquid
- sample.bookshop.yml
- sample.scss★
shared
styles
- global.scss★
These files are completely optional, and can be safely deleted if you would rather maintain your component styles elsewhere.
To include Bookshop styles on an Eleventy website, Bookshop provides a @bookshop/sass package
to include as part of your build step:
npx @bookshop/sass -b component-library -o site/css/bookshop.cssThis compiles all of the styles from your Bookshop directory, and outputs a CSS file ready to be referenced on your website or imported into another style pipeline.
Bookshop first imports all styles that exist in the shared/styles/ directory, followed by all component styles
in alphabetical order. As such the shared/styles/ directory is a great place to define any variables or mixins
that your component styles will use.
The @bookshop/sass command will run any PostCSS plugins you have configured in your working directory.
To easily add this command as part of your workflow, install the @bookshop/sass package and reference
bookshop-sass from your package.json:
{
...
"scripts": {
...
"sass:build": "bookshop-sass -b component-library -o site/css/bookshop.css",
"sass:watch": "bookshop-sass -b component-library -o site/css/bookshop.css -w"
}
}Run npx @bookshop/sass --help to see the available options.