54ba9f5ee1
* Fix complex MDX parsing This allows fully MDX support using the micromark MDX extension. One caveat is that if you do something like use the less than sign, you need to escape it because the parser expects these to be tags otherwise. * Move micromark definition |
||
---|---|---|
.github | ||
.vscode | ||
examples | ||
prism-astro | ||
src | ||
test | ||
vscode | ||
www | ||
.eslintignore | ||
.eslintrc.cjs | ||
.gitignore | ||
.prettierrc.json | ||
astro.mjs | ||
LICENSE | ||
package-lock.json | ||
package.json | ||
README.md | ||
snowpack-plugin.cjs | ||
tsconfig.json |
👩🚀 Astro
A next-generation static-site generator with partial hydration. Use your favorite JS framework and ship bare-minimum JS (or none at all!).
🔧 Setup
npm install astro
TODO: astro boilerplate
🧞 Development
Add a dev
npm script to your /package.json
file:
{
"scripts": {
"dev": "astro dev ."
}
}
Then run:
npm run dev
💧 Partial Hydration
By default, Astro outputs zero client-side JS. If you'd like to include an interactive component in the client output, you may use any of the following techniques.
MyComponent:load
will renderMyComponent
on page loadMyComponent:idle
will userequestIdleCallback
to renderMyComponent
as soon as main thread is freeMyComponent:visible
will use anIntersectionObserver
to renderMyComponent
when the element enters the viewport
💅 Styling
If you‘ve used Svelte’s styles before, Astro works almost the same way. In any .astro
file, start writing styles in a <style>
tag like so:
<style>
.scoped {
font-weight: bold;
}
</style>
<div class="scoped">I’m a scoped style</div>
Sass
Astro also supports Sass out-of-the-box; no configuration needed:
<style lang="scss">
@use "../tokens" as *;
.title {
color: $color.gray;
}
</style>
<h1 class="title">Title</h1>
Supports:
lang="scss"
: load as the.scss
extensionlang="sass"
: load as the.sass
extension (no brackets; indent-style)
Autoprefixer
We also automatically add browser prefixes using Autoprefixer. By default, Astro loads the default values, but you may also specify your own by placing a Browserslist file in your project root.
🚀 Build & Deployment
Add a build
npm script to your /package.json
file:
{
"scripts": {
"dev": "astro dev .",
"build": "astro build ."
}
}
Then run:
npm run build
Now upload the contents of /_site_
to your favorite static site host.