Add Migration Guide to docs (#1751)

* Add Migration Guide to docs

* edit: replace astro.config.js with astro.config.mjs

* edit: use plain object in define:vars example

* edit: improve 'components in markdown' documentation

* edit: use astro resolve in file reference documentation example

* edit: rename 'writing plugins' heading to 'custom renderers'

Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com>

* edit: fix PUBLIC_ environment variable example

* edit: fix define:vars variable in example

* edit: remove top-level alias documentation

* edit: cleanup "passing variables into scripts and styles" description

* Update migration-guide.md

* Update migration-guide.md

* update deployment config

* update configuration

* fix some errors and write a commit message about it

* move the migration guide

* update documentation

* add migration guide to sidebar

Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com>
Co-authored-by: Fred K. Schott <fkschott@gmail.com>
This commit is contained in:
Jonathan Neal 2021-11-12 07:40:49 -05:00 committed by GitHub
parent 5f5df8a63a
commit 5470fda3fe
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 237 additions and 18 deletions

2
.nvmrc
View file

@ -1 +1 @@
14.16.1
14.18.1

1
docs/.nvmrc Normal file
View file

@ -0,0 +1 @@
14.18.1

6
docs/.stackblitzrc Normal file
View file

@ -0,0 +1,6 @@
{
"startCommand": "npm start",
"env": {
"ENABLE_CJS_IMPORTS": true
}
}

View file

@ -8,13 +8,5 @@ export default /** @type {import('astro').AstroUserConfig} */ ({
'@astrojs/renderer-preact',
// Needed for Algolia search component
'@astrojs/renderer-react',
],
vite: {
resolve: {
alias: {
'~': '/src',
components: '/src/components',
},
},
},
]
});

8
docs/jsconfig.json Normal file
View file

@ -0,0 +1,8 @@
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"~/*": ["src/*"]
}
}
}

View file

@ -26,5 +26,8 @@
},
"dependencies": {
"@docsearch/react": "^1.0.0-alpha.27"
},
"volta": {
"node": "14.18.1"
}
}

View file

@ -6,6 +6,7 @@ export const SIDEBAR = {
{ text: 'Installation', link: 'installation' },
{ text: 'Themes', link: 'themes' },
{ text: 'Astro vs. X', link: 'comparing-astro-vs-other-tools' },
{ text: 'Migrate to v0.21', link: 'migration/0.21.0' },
{ text: 'Basics', header: true },
{ text: 'Project Structure', link: 'core-concepts/project-structure' },

View file

@ -37,7 +37,7 @@ Por defecto, la salida de la compilación se colocará en `dist/`. Puedes desple
1. Establece el `buildOptions.site` correcto en `astro.config.mjs`.
2. Dentro de tu proyecto, crea `deploy.sh` con el siguiente contenido (sin comentar las líneas apropiadas) y ejecútalo para implementar:
```bash{13,20,23}
```bash
#!/usr/bin/env sh
# abortar en errores

View file

@ -1,7 +1,7 @@
---
import { Markdown } from 'astro/components';
import MainLayout from '~/layouts/MainLayout.astro';
const [content] = Astro.fetchContent('~/pages/guides/markdown-content.md');
const [content] = Astro.fetchContent('/src/pages/guides/markdown-content.md');
---
<MainLayout content="{content}">

View file

@ -1,7 +1,7 @@
---
import { Markdown } from 'astro/components';
import MainLayout from '~/layouts/MainLayout.astro';
const [content] = Astro.fetchContent('~/pages/guides/pagination.md');
const [content] = Astro.fetchContent('/src/pages/guides/pagination.md');
---
<MainLayout content="{content}">

View file

@ -1,7 +1,7 @@
---
import { Markdown } from 'astro/components';
import MainLayout from '~/layouts/MainLayout.astro';
const [content] = Astro.fetchContent('~/pages/guides/publish-to-npm.md');
const [content] = Astro.fetchContent('/src/pages/guides/publish-to-npm.md');
---
<MainLayout content="{content}">

View file

@ -1,7 +1,7 @@
---
import { Markdown } from 'astro/components';
import MainLayout from '~/layouts/MainLayout.astro';
const [content] = Astro.fetchContent('~/pages/guides/styling.md');
const [content] = Astro.fetchContent('/src/pages/guides/styling.md');
---
<MainLayout content="{content}">

View file

@ -1,7 +1,7 @@
---
import { Markdown } from 'astro/components';
import MainLayout from '~/layouts/MainLayout.astro';
const [content] = Astro.fetchContent('~/pages/reference/renderer-reference.md');
const [content] = Astro.fetchContent('/src/pages/reference/renderer-reference.md');
---
<MainLayout content="{content}">

View file

@ -0,0 +1,208 @@
---
layout: ~/layouts/MainLayout.astro
title: Migrating to v0.21
description: How to migrate projects from Astro v0.20.
---
## Vite
Starting in v0.21, Astro is built with [Vite].
As a result, configurations written in `snowpack.config.mjs` should be moved into `astro.config.mjs`.
```js
// @ts-check
/** @type {import('astro').AstroUserConfig} */
export default ({
renderers: [],
vite: {
plugins: []
}
})
```
To learn more about configuring Vite, please visit their [configuration guide](https://vitejs.dev/config/).
## Aliasing
In Astro v0.21, import aliases can be added from `tsconfig.json` or `jsconfig.json`.
```json
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/components/*": ["components/*"]
}
}
}
```
_These aliases are integrated automatically into [VSCode](https://code.visualstudio.com/docs/languages/jsconfig) and other editors._
## Variables in Scripts & Styles
In Astro v0.21, server-side variables can be passed into client-side `<style>` or `<script>`.
```astro
---
// tick.astro
const colors = { foregroundColor: "rgb(221 243 228)", backgroundColor: "rgb(24 121 78)" }
---
<style define:vars={colors}>
h-tick {
background-color: var(--backgroundColor);
border-radius: 50%;
color: var(--foregroundColor);
height: 15px;
width: 15px;
}
</style>
<h-tick></h-tick>
```
## Components in Markdown
In Astro v0.21, Components from any framework can be used within Markdown files.
```md
---
Layout: '...'
setup: |
import MyReactComponent from '../components/MyReactComponent.jsx'
---
# Hydrating on visibility
<MyReactComponent client:visible>
# Hello world!
</MyReactComponent>
```
## Environment Variables
In Astro v0.21, environment variables can be loaded from `.env` files in your project directory.
```ini
.env # loaded in all cases
.env.local # loaded in all cases, ignored by git
.env.[mode] # only loaded in specified mode
.env.[mode].local # only loaded in specified mode, ignored by git
```
For security purposes, only variables prefixed with `PUBLIC_` are accessible to your code.
```ini
SECRET_PASSWORD=password123
PUBLIC_ANYBODY=there
```
In this example, `PUBLIC_ANYBODY` will be available as `import.meta.env.PUBLIC_ANYBODY` in server or client code, while `SECRET_PASSWORD` will not.
> In prior releases, these variables were prefixed with `SNOWPACK_PUBLIC_` and required the `@snowpack/plugin-env` plugin.
## File Extensions
In Astro v0.21, files need to be referenced by their actual extension, exactly as it is on disk.
```tsx
// Div.tsx
export default function Div(props) {
return <div />
}
```
In this example, `Div.tsx` would need to be referenced as `Div.tsx`, not `Div.jsx`.
```diff
- import Div from './Div.jsx' // Astro v0.20
+ import Div from './Div.tsx' // Astro v0.21
```
This same change applies to styles.
```scss
// Div.scss
div {
all: unset
}
```
```diff
- <link rel="stylesheet" href={Astro.resolve('./Div.css')}>
+ <link rel="stylesheet" href={Astro.resolve('./Div.scss')}>
```
## Plugins
In Astro v0.21, Vite plugins may be configured within `astro.config.mjs`.
```js
import { imagetools } from 'vite-imagetools'
export default {
vite: {
plugins: [
imagetools()
]
}
}
```
To learn more about Vite plugins, please visit their [plugin guide](https://vitejs.dev/guide/using-plugins.html).
## Custom Renderers
In Astro v0.21, plugins should now use `viteConfig()`.
```diff
// renderer-svelte/index.js
+ import { svelte } from '@sveltejs/vite-plugin-svelte';
export default {
name: '@astrojs/renderer-svelte',
client: './client.js',
server: './server.js',
- snowpackPlugin: '@snowpack/plugin-svelte',
- snowpackPluginOptions: { compilerOptions: { hydratable: true } },
+ viteConfig() {
+ return {
+ optimizeDeps: {
+ include: ['@astrojs/renderer-svelte/client.js', 'svelte', 'svelte/internal'],
+ exclude: ['@astrojs/renderer-svelte/server.js'],
+ },
+ plugins: [
+ svelte({
+ emitCss: true,
+ compilerOptions: { hydratable: true },
+ }),
+ ],
+ };
+ },
}
```
To learn more about Vite plugins, please visit their [plugin guide](https://vitejs.dev/guide/using-plugins.html).
> In prior releases, these were configured with `snowpackPlugin` or `snowpackPluginOptions`.
[Snowpack]: https://www.snowpack.dev
[Vite]: https://vitejs.dev

View file

@ -35,7 +35,7 @@ Onze gids over [Astro-componenten](/core-concepts/astro-components) helpt je doo
### API referentie
Deze documentatiesectie is handig als je meer details wilt weten over een bepaalde Astro API. [Configuratie referentie](/reference/configuration-reference) vermeldt bijvoorbeeld alle mogelijke configuratieopties die beschikbaar zijn. [Ingebouwde Componenten Referentie](/reference/builtin-components) geeft een overzicht van alle beschikbare kerncomponenten, zoals <Markdown /> en <Code />.
Deze documentatiesectie is handig als je meer details wilt weten over een bepaalde Astro API. [Configuratie referentie](/reference/configuration-reference) vermeldt bijvoorbeeld alle mogelijke configuratieopties die beschikbaar zijn. [Ingebouwde Componenten Referentie](/reference/builtin-components) geeft een overzicht van alle beschikbare kerncomponenten, zoals `<Markdown />` en `<Code />`.
### Documentatie versies

View file

@ -1,7 +1,7 @@
---
import Layout from '../layouts/MainLayout.astro';
import Card from '../components/Card.astro';
import {Markdown} from 'astro/components';
import { Markdown } from 'astro/components';
import themes from '../data/themes.json';
import components from '../data/components.json';
---