## External build ``` . ├── .eleventy.js ├── _includes │ └── base.njk ├── index.md ├── package.json ├── postcss.config.js └── styles └── index.css ``` #### `package.json` ```json "scripts": { "build:css": "postcss styles/index.css -o _site/styles/main.css --verbose", "11ty:serve": "eleventy --serve", "11ty:pack": "eleventy", "serve": "NODE_ENV=development run-p 11ty:serve 'build:css --watch'", "build": "NODE_ENV=production run-p 11ty:pack build:css" }, "devDependencies": { "@11ty/eleventy": "^0.10.0", "cssnano": "^4.1.10", "npm-run-all": "^4.1.5", "postcss": "^7.0.27", "postcss-cli": "^7.1.0", "postcss-load-config": "^2.1.0", "postcss-preset-env": "^6.7.0" } ``` #### `postcss.config.js` ```js module.exports = ({ env }) => ({ plugins: { 'postcss-preset-env': {}, ...(env === 'production' && { cssnano: {} }), }, }); ``` #### `.eleventy.js` ```js module.exports = config => { config.setBrowserSyncConfig({ files: ['_site/styles'], }); }; ``` #### `_includes/base.njk` ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <link rel="stylesheet" href="/styles/main.css" /> </head> <body> {{ content | safe }} </body> </html> ``` #### `index.md` ```html --- layout: base --- <h1>11ty stylesheets</h1> ``` ### Cons - Adds a few building dependencies (postcss-cli, npm-run-all) ### Pros - Extensible - CSS processing gets run only once - Fit for a large CSS codebase - Don't triggers a full website build on every css change - True hot reload