Instruktioner och lärdomar för AI-assistenter som arbetar med detta projekt.
Lita INTE på egen kunskap om versioner, API:er eller aktuell syntax.
Använd alltid:
- WebSearch för att verifiera aktuella versioner (Node.js, npm-paket, etc.)
- Context7 (
mcp__context7__resolve-library-id+mcp__context7__query-docs) för biblioteksdokumentation
Exempel på saker som ändras snabbt:
- Node.js LTS-versioner
- Framework-versioner och syntax
- API-ändringar i bibliotek
- Best practices
Detta är Athegas webbplats, byggd med Eleventy 3.0 (migrerad från Jekyll i januari 2025).
npm install # Installera beroenden
npm start # Starta dev-server på localhost:8080
npm run build # Bygg sajten till _site/- eleventy.config.js - Huvudkonfiguration (ESM-format)
- package.json - Beroenden och npm-scripts
- _data/site.json - Site-variabler (url, etc.)
Jekyll:
{{ page.title }}
{{ page.image_url }}
{{ site.posts }}Eleventy:
{{ title }}
{{ image_url }}
{{ collections.posts }}Front matter-variabler nås direkt utan page.-prefix i Eleventy.
I Eleventy nås front matter via .data när man itererar över collections:
{% for post in collections.posts %}
{{ post.data.title }} <!-- OBS: .data. prefix -->
{{ post.url }} <!-- url är direkt på objektet -->
{% endfor %}Markdown-processorn (i både Jekyll och Eleventy) kräver en tom rad efter HTML-element för att fortsätta tolka Markdown:
Fungerar inte:
<h3 id="rubrik">Min rubrik</h3>
Text med [länk](http://example.com) fungerar inte.Fungerar:
<h3 id="rubrik">Min rubrik</h3>
Text med [länk](http://example.com) fungerar nu.Eleventy processar inte SCSS automatiskt. Vi kör Sass separat via npm:
"scripts": {
"sass": "sass assets/site.scss:_site/assets/site.css --style=compressed",
"build": "npm run sass && npx @11ty/eleventy"
}Modern Sass-syntax: Använd @use istället för @import:
@use "lib/prism" as *;
@use "layout" as *;@use-statements måste komma först i filen, före all annan kod.
assets/site.js.liquid är en Liquid-template som konkatenerar JS-filer:
---
permalink: /assets/site.js
layout: false
---
{% include "lib/jquery.min.js" %}
{% include "header.js" %}Filen måste ha .liquid-extension för att processas som template.
Bilder i innehållsmappar (inte bara assets/) måste explicit kopieras:
eleventyConfig.addPassthroughCopy("**/*.jpg");
eleventyConfig.addPassthroughCopy("**/*.png");
// etc.Collections sorteras inte automatiskt som i Jekyll. Explicit sortering krävs:
// Alfabetisk sortering efter filnamn
eleventyConfig.addCollection("employees", function(collection) {
return collection.getFilteredByGlob("_employees/*.md")
.sort((a, b) => a.inputPath.localeCompare(b.inputPath));
});Sidor som behöver <section class="content"> wrapper måste använda rätt layout:
- page - För vanliga innehållssidor
- post - För blogginlägg
- employee - För medarbetarsidor (ny layout skapad vid migrering)
- default - Bas-layout utan content wrapper
För att sätta layout på alla filer i en mapp, skapa en JSON-fil med mappens namn:
jobba/
jobba.json # {"layout": "page"}
index.md
Använder @11ty/eleventy-plugin-syntaxhighlight med Prism. CSS-tema finns i _includes/lib/prism.scss.
- Glöm inte
.data.när du läser front matter i collection-loopar - Tom rad efter HTML krävs för att Markdown ska processas
- Sortering av collections måste göras explicit
- Bilder utanför assets/ kopieras inte automatiskt
- SCSS kompileras separat, inte av Eleventy
@useföre allt annat i SCSS-filer- Dokumentationsfiler med Liquid-exempel (som denna fil) måste läggas till i
eleventyConfig.ignores, annars försöker Eleventy köra kodexemplen
Efter ändringar, verifiera:
npm run buildgår igenom utan fel- Startsidan renderar korrekt
- Blogginlägg visar rätt datum och innehåll
- Medarbetarsidor har rätt struktur
- Bilder laddas
- Interna länkar fungerar