diff --git a/src/content/docs/pt-br/concepts/why-astro.mdx b/src/content/docs/pt-br/concepts/why-astro.mdx
index 580558e9a4b19..b7a38ebfe64b3 100644
--- a/src/content/docs/pt-br/concepts/why-astro.mdx
+++ b/src/content/docs/pt-br/concepts/why-astro.mdx
@@ -74,6 +74,6 @@ Um dos nossos provérbios favoritos é: **opte por mais complexidade.** Nós fiz
**Astro é um framework web tudo em um que vem com tudo o que você precisa para construir um website.** Astro inclui uma sintaxe de componentes, roteamento baseado em arquivos, manipulação de assetes, processo de build, bundling, otimizações, busca de dados e mais. Você pode construir ótimos websites sem se aproximar de funcionalidades fora do núcleo do Astro.
-Se você precisar de mais controle, você pode expandir o Astro com [+100 integrações](https://astro.build/integrations/) como [React](https://www.npmjs.com/package/@astrojs/react), [Svelte](https://www.npmjs.com/package/@astrojs/svelte), [Vue](https://www.npmjs.com/package/@astrojs/vue), [Tailwind CSS](https://www.npmjs.com/package/@astrojs/tailwind), [MDX](https://www.npmjs.com/package/@astrojs/mdx), [otimização de imagens](https://www.npmjs.com/package/@astrojs/image) e mais. [Conectar o seu CMS favorito](/pt-br/guides/cms/) ou [fazer deploy para seu host favorito](/pt-br/guides/deploy/) com apenas um comando.
+Se você precisar de mais controle, você pode expandir o Astro com [+100 integrações](https://astro.build/integrations/) como [React](https://www.npmjs.com/package/@astrojs/react), [Svelte](https://www.npmjs.com/package/@astrojs/svelte), [Vue](https://www.npmjs.com/package/@astrojs/vue), [Tailwind CSS](https://www.npmjs.com/package/@astrojs/tailwind), [MDX](https://www.npmjs.com/package/@astrojs/mdx) e mais. [Conectar o seu CMS favorito](/pt-br/guides/cms/) ou [fazer deploy para seu host favorito](/pt-br/guides/deploy/) com apenas um comando.
Astro é agnóstico a UI, o que significa que você pode **Trazer o seu Próprio Framework de UI (BYOF, do inglês, "Bring Your Own Ui Framework")**. React, Preact, Solid, Svelte, Vue e Lit são todos oficialmente suportados no Astro. Você pode até misturar diferentes frameworks na mesma página, fazendo migrações futuras mais fáceis e prevenindo que você fique preso a um único framework.
diff --git a/src/content/docs/pt-br/core-concepts/endpoints.mdx b/src/content/docs/pt-br/core-concepts/endpoints.mdx
index c99826d2e6cd2..30b1008949bdc 100644
--- a/src/content/docs/pt-br/core-concepts/endpoints.mdx
+++ b/src/content/docs/pt-br/core-concepts/endpoints.mdx
@@ -10,34 +10,31 @@ O Astro permite que você crie endpoints customizados para servir e processar to
Em sites gerados de forma estática, seus endpoints customizados são chamados durante a fase de build para produzir arquivos estáticos. Já em sites usando o [modo SSR](/pt-br/guides/server-side-rendering/#habilitando-o-ssr-em-seu-projeto) seus endpoints customizados se tornarão endpoints reais executados a cada requisição. Endpoints estáticos e SSR são definidos de maneira similar, mas os endpoints SSR suportam funcionalidades adicionais.
## Endpoints de Arquivos Estáticos
+
Para criar um endpoint customizado, adicione um arquivo `.js` ou `.ts` no diretório `/pages`. A extensão do arquivo será removida durante o processo de build, portanto o nome do arquivo deve conter a extensão que você deseja que os dados usem, por exemplo `src/pages/data.json.ts` se tornará a rota `/data.json`.
-Seus endpoints devem exportar uma função `get` (opcionalmente assíncrona) que recebe um [objeto de contexto](/pt-br/reference/api-reference/#contexto-de-endpoint) com propriedades similares a global `Astro`. Ele retorna um objeto com um `body`, que o Astro irá chamar durante a build e utilizar seu conteúdo para gerar o arquivo.
+Seus endpoints devem exportar uma função `GET` (opcionalmente assíncrona) que recebe um [objeto de contexto](/pt-br/reference/api-reference/#contexto-de-endpoint) com propriedades similares a global `Astro`. Aqui, ele retorna um objeto `Response` com um `name` e `url`, que o Astro irá chamar durante a build e utilizar seu conteúdo para gerar o arquivo.
```ts
// Exemplo: src/pages/builtwith.json.ts
// Se tornará: /builtwith.json
-export async function get({params, request}) {
- return {
- body: JSON.stringify({
+export async function GET({params, request}) {
+ return new Response(
+ JSON.stringify({
name: 'Astro',
- url: 'https://astro.build/',
- }),
- };
+ url: 'https://astro.build/'
+ })
+ )
}
```
-O objeto retornado também pode conter a propriedade `encoding`. Ela deve ser uma string válida do tipo [`BufferEncoding`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/bdd02508ddb5eebcf701fdb8ffd6e84eabf47885/types/node/buffer.d.ts#L169) aceita pelo método `fs.writeFile` do Node.js. Por exemplo, para gerar uma imagem no formato png retornamos:
+Desde o Astro v3.0, 0 objeto `Response` retornado não tem mais que incluir a propriedade `encoding`. Por exemplo, para produzir uma imagem binária png:
-```ts title="src/pages/builtwith.json.ts" {6}
-export async function get({ params, request }) {
+```ts title="src/pages/builtwith.json.ts" {3}
+export async function GET({ params, request }) {
const response = await fetch("https://docs.astro.build/assets/full-logo-light.png");
- const buffer = Buffer.from(await response.arrayBuffer());
- return {
- body: buffer,
- encoding: 'binary',
- };
-};
+ return new Response(await response.arrayBuffer());
+}
```
Também é possível adicionar validação de tipo à sua função com o tipo `APIRoute`:
@@ -45,8 +42,7 @@ Também é possível adicionar validação de tipo à sua função com o tipo `A
```ts
import type { APIRoute } from 'astro';
-export const get: APIRoute = async ({ params, request }) => {
-...
+export const GET: APIRoute = async ({ params, request }) => {...}
```
### Roteamento dinâmico e a propriedade `params`
@@ -56,45 +52,47 @@ Os endpoints suportam as mesmas funcionalidades de [roteamento dinâmico](/pt-br
```ts title="src/pages/api/[id].json.ts"
import type { APIRoute } from 'astro';
-const usuarios = ["Sarah", "Chris", "Dan"]
+const usuarios = ["Sarah", "Chris", "Yan", "Elian"]
-export const get: APIRoute = ({ params, request }) => {
+export const GET: APIRoute = ({ params, request }) => {
const id = params.id;
- return {
- body: JSON.stringify({
+ return new Response(
+ JSON.stringify({
name: usuarios[id]
})
- }
-};
+ )
+}
-export function getStaticPaths () {
+export function getStaticPaths() {
return [
{ params: { id: "0"} },
{ params: { id: "1"} },
{ params: { id: "2"} },
+ { params: { id: "3"} }
]
}
```
-Dessa forma serão gerados três endpoints JSON durante a build: `/api/0.json`, `/api/1.json` e `/api/2.json`. O roteamento dinâmico com endpoints funciona da mesma forma que nas páginas, porém, como um endpoint é uma função e não uma página, [props](/pt-br/reference/api-reference/#passagem-de-dados-com-props) não são suportadas.
+Isso irá gerar quatro endpoints JSON durante a build: `/api/0.json`, `/api/1.json`, `/api/2.json` e `/api/3.json`. O roteamento dinâmico com endpoints funciona da mesma forma que nas páginas, porém, como um endpoint é uma função e não uma página, [props](/pt-br/reference/api-reference/#passagem-de-dados-com-props) não são suportadas.
### `request`
+
Todos os endpoints recebem uma propriedade `request`, porém no modo estático você só tem acesso a propriedade `request.url`. Ela retorna o URL completo do endpoint atual e funciona da mesma forma que [Astro.request.url](/pt-br/reference/api-reference/#astrorequest) funciona em páginas.
```ts title="src/pages/request-path.json.ts"
import type { APIRoute } from 'astro';
-export const get: APIRoute = ({ params, request }) => {
- return {
- body: JSON.stringify({
+export const GET: APIRoute = ({ params, request }) => {
+ return new Response(JSON.stringify({
path: new URL(request.url).pathname
})
- };
+ )
}
```
## Endpoints do Servidor (Rotas de API)
-Tudo descrito na seção de endpoints de arquivos estáticos também pode ser utilizado no modo SSR: arquivos podem exportar uma função `get` que recebe um [objeto de contexto](/pt-br/reference/api-reference/#contexto-de-endpoint) com propriedades similares a global `Astro`.
+
+Tudo descrito na seção de endpoints de arquivos estáticos também pode ser utilizado no modo SSR: arquivos podem exportar uma função `GET` que recebe um [objeto de contexto](/pt-br/reference/api-reference/#contexto-de-endpoint) com propriedades similares a global `Astro`.
Porém, diferente do modo `static`, quando você configura o modo `server`, os endpoints serão construídos no momento em que são requisitados. Isso desbloqueia novas funcionalidades que estão indisponíveis durante a build e permite que você construa rotas de API que respondem requisições e seguramente executam código no servidor em runtime.
@@ -109,7 +107,7 @@ Os endpoints do servidor tem acesso a propriedade `params` sem exportar a funç
```js title="src/pages/[id].json.js"
import { getProduct } from '../db';
-export async function get({ params }) {
+export async function GET({ params }) {
const id = params.id;
const product = await getProduct(id);
@@ -120,12 +118,14 @@ export async function get({ params }) {
});
}
- return new Response(JSON.stringify(product), {
- status: 200,
- headers: {
- "Content-Type": "application/json"
+ return new Response(
+ JSON.stringify(product), {
+ status: 200,
+ headers: {
+ "Content-Type": "application/json"
+ }
}
- });
+ );
}
```
@@ -134,7 +134,7 @@ Esse código responderá a qualquer requisição que corresponda à rota dinâmi
No modo SSR, certos provedores requerem que o cabeçalho `Content-Type` retorne uma imagem. Neste caso, utilize um objeto `Response` para especificar uma propriedade `headers`. Por exemplo, para produzir uma imagem `.png` binária:
```ts title="src/pages/astro-logo.png.ts"
-export async function get({ params, request }) {
+export async function GET({ params, request }) {
const response = await fetch("https://docs.astro.build/assets/full-logo-light.png");
const buffer = Buffer.from(await response.arrayBuffer());
return new Response(buffer, {
@@ -144,55 +144,49 @@ export async function get({ params, request }) {
```
### Métodos HTTP
-Além da função `get`, você pode exportar uma função com o nome de qualquer [método HTTP](https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Methods). Assim, quando uma requisição for recebida, o Astro irá checar o método e chamar a função correspondente.
-Também é possível exportar uma função `all` para corresponder a todos os métodos que já não tenham suas respectivas funções exportadas. Se houver uma requisição sem método correspondente, ela será redirecionada para a sua [página de 404](/pt-br/core-concepts/astro-pages/#página-customizada-de-erro-404).
+Além da função `GET`, você pode exportar uma função com o nome de qualquer [método HTTP](https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Methods). Assim, quando uma requisição for recebida, o Astro irá checar o método e chamar a função correspondente.
-:::note
-Como `delete` é uma palavra reservada do JavaScript, exporte uma função chamada `del` para corresponder ao método delete.
-:::
+Também é possível exportar uma função `ALL` para corresponder a todos os métodos que já não tenham suas respectivas funções exportadas. Se houver uma requisição sem método correspondente, ela será redirecionada para a sua [página de 404](/pt-br/core-concepts/astro-pages/#página-customizada-de-erro-404).
```ts title="src/pages/methods.json.ts"
-export const get: APIRoute = ({ params, request }) => {
- return {
- body: JSON.stringify({
- message: "Método GET"
+export const GET: APIRoute = ({ params, request }) => {
+ return new Response(JSON.stringify({
+ message: "Isso foi um GET!"
})
- }
-};
+ )
+}
-export const post: APIRoute = ({ request }) => {
- return {
- body: JSON.stringify({
- message: "Método POST!"
+export const POST: APIRoute = ({ request }) => {
+ return new Response(JSON.stringify({
+ message: "Isso foi um POST!"
})
- }
+ )
}
-export const del: APIRoute = ({ request }) => {
- return {
- body: JSON.stringify({
- message: "Método DELETE!"
+export const DELETE: APIRoute = ({ request }) => {
+ return new Response(JSON.stringify({
+ message: "Isso foi um DELETE!"
})
- }
+ )
}
-export const all: APIRoute = ({ request }) => {
- return {
- body: JSON.stringify({
- message: `Método ${request.method}!`
+export const ALL: APIRoute = ({ request }) => {
+ return new Resonse(JSON.stringify({
+ message: `Isso foi um ${request.method}!`
})
- }
+ )
}
```
### `request`
+
No modo SSR, a propriedade `request` retorna um objeto [`Request`](https://developer.mozilla.org/pt-BR/docs/Web/API/Request) completamente utilizável que se refere a requisição atual. Isso permite que você aceite dados e cheque cabeçalhos:
```ts title="src/pages/test-post.json.ts"
-export const post: APIRoute = async ({ request }) => {
+export const POST: APIRoute = async ({ request }) => {
if (request.headers.get("Content-Type") === "application/json") {
const body = await request.json();
const name = body.name;
@@ -207,12 +201,13 @@ export const post: APIRoute = async ({ request }) => {
```
### Redirecionamentos
+
O contexto do endpoint exporta um utilitário `redirect()` similar ao `Astro.redirect`:
```js title="src/pages/links/[id].js" {14}
import { getLinkUrl } from '../db';
-export async function get({ params, redirect }) {
+export async function GET({ params, redirect }) {
const { id } = params;
const link = await getLinkUrl(id);
diff --git a/src/content/docs/pt-br/core-concepts/project-structure.mdx b/src/content/docs/pt-br/core-concepts/project-structure.mdx
index 27ef7e458b90d..18c5c996e66d8 100644
--- a/src/content/docs/pt-br/core-concepts/project-structure.mdx
+++ b/src/content/docs/pt-br/core-concepts/project-structure.mdx
@@ -66,10 +66,6 @@ Alguns arquivos (como componentes Astro) nem sequer são enviados ao navegador c
Enquanto esse guia descreve algumas convenções populares usadas na comunidade do Astro, as únicas pastas reservadas pelo Astro são `src/pages/` e `src/content`. Você é livre para renomear e reorganizar quaisquer outras pastas de uma forma que funciona melhor para você.
:::
-### `src/assets`
-
-A pasta [`src/assets`](/pt-br/guides/assets/) é a pasta recomendada para armazenar assets (e.x. imagens) a serem processados pelo Astro. Isso não é obrigatório, e esta não é uma pasta especial reservada.
-
### `src/components`
**Componentes** são pedaços reutilizáveis de código para suas páginas HTML. Eles podem ser [componentes Astro](/pt-br/core-concepts/astro-components/) ou [componentes de frameworks de UI](/pt-br/core-concepts/framework-components/) como React ou Vue. É comum agrupar e organizar todos os componentes do seu projeto nesta pasta.
diff --git a/src/content/docs/pt-br/guides/content-collections.mdx b/src/content/docs/pt-br/guides/content-collections.mdx
index b03443ff35896..5e5812fd242ce 100644
--- a/src/content/docs/pt-br/guides/content-collections.mdx
+++ b/src/content/docs/pt-br/guides/content-collections.mdx
@@ -395,6 +395,17 @@ const entradasPublicadasBlog = await getCollection('blog', ({ data }) => {
});
```
+
+Você também pode criar páginas de rascunho que são disponibilizadas ao executar o servidor de desenvolvimento, mas não são construídas em produção:
+
+```js
+// Exemplo: Filtrar entradas de conteúdo com `draft: true` apenas ao fazer build para produção
+import { getCollection } from 'astro:content';
+const entradasBlog = await getCollection('blog', ({ data }) => {
+ return import.meta.env.PROD ? data.draft !== true : true;
+});
+```
+
O argumento de filtragem também suporta filtragem por pastas aninhadas dentro de uma coleção. Já que o `id` inclui o caminho aninhado completo, você pode filtrar pelo começo de cada `id` para retornar somente itens de uma pasta aninhada específica:
```js
@@ -706,7 +717,7 @@ Esse guia mostra como converter um projeto com Astro existente com arquivos Mark
import rss from "@astrojs/rss";
import { getCollection } from "astro:content";
- export async function get() {
+ export async function GET() {
const postagens = await getCollection('postagens');
return rss({
title: 'Astro Learner | Blog',
diff --git a/src/content/docs/pt-br/guides/deploy/netlify.mdx b/src/content/docs/pt-br/guides/deploy/netlify.mdx
index d1cbd2cb2b307..03697ed085763 100644
--- a/src/content/docs/pt-br/guides/deploy/netlify.mdx
+++ b/src/content/docs/pt-br/guides/deploy/netlify.mdx
@@ -121,7 +121,7 @@ Você também pode criar um site na Netlify e vincular o seu repositório Git in
### Defina uma versão do Node.js
-Se você está usando uma [imagem de build](https://docs.netlify.com/configure-builds/get-started/#build-image-selection) legada (Xenial) na Netlify, certifique-se de que a versão do Node.js está definida. Astro requer `v16.12.0` ou superior.
+Se você está usando uma [imagem de build](https://docs.netlify.com/configure-builds/get-started/#build-image-selection) legada (Xenial) na Netlify, certifique-se de que a versão do Node.js está definida. Astro requer `v18.14.1` ou superior.
Você pode [especificar a versão do Node.js na Netlify](https://docs.netlify.com/configure-builds/manage-dependencies/#node-js-and-javascript) usando:
- um arquivo [`.nvmrc`](https://github.com/nvm-sh/nvm#nvmrc) em seu diretório base.
diff --git a/src/content/docs/pt-br/guides/deploy/render.mdx b/src/content/docs/pt-br/guides/deploy/render.mdx
index 934edb6b16e92..c05b44a1d9765 100644
--- a/src/content/docs/pt-br/guides/deploy/render.mdx
+++ b/src/content/docs/pt-br/guides/deploy/render.mdx
@@ -15,5 +15,5 @@ Você pode fazer deploy do seu projeto Astro no [Render](https://render.com/), u
4. Dê um nome ao seu site, selecione a branch e especifique o comando de build e diretório de publicação
- **build command:** `npm run build`
- **publish directory:** `dist`
- - **Environment variables (advanced)**: Por padrão, o Render utiliza Node.js 14.17.0, mas o Astro [requer uma versão maior](/pt-br/install/auto/#pré-requisitos). Adicione uma variável de ambiente com uma **Variable key** de `NODE_VERSION` e um **Value** de `16.12.0` ou maior para instruir o Render a usar uma versão compatível do Node.js. Alternativamente, adicione um arquivo [`.node-version`](https://render.com/docs/node-version) ou [`.nvmrc`](https://render.com/docs/node-version) em seu projeto para especificar uma versão do Node.js.
+ - **Environment variables (advanced)**: Por padrão, o Render utiliza Node.js 14.17.0, mas o Astro [requer uma versão maior](/pt-br/install/auto/#pré-requisitos). Adicione uma variável de ambiente com uma **Variable key** de `NODE_VERSION` e um **Value** de `18.14.1` ou maior para instruir o Render a usar uma versão compatível do Node.js. Alternativamente, adicione um arquivo [`.node-version`](https://render.com/docs/node-version) ou [`.nvmrc`](https://render.com/docs/node-version) em seu projeto para especificar uma versão do Node.js.
5. Clique no botão **Create Static Site**
diff --git a/src/content/docs/pt-br/guides/deploy/vercel.mdx b/src/content/docs/pt-br/guides/deploy/vercel.mdx
index fe505b5665004..4e3dbafaa9d9e 100644
--- a/src/content/docs/pt-br/guides/deploy/vercel.mdx
+++ b/src/content/docs/pt-br/guides/deploy/vercel.mdx
@@ -84,4 +84,4 @@ Você pode utilizar `vercel.json` para sobrescrever o comportamento padrão da V
### Atualizando para Astro 2.0
-Astro v2.0 remove suporte para Node 14, então certifique-se de que seu projeto está utilizando **Node `16.12.0` ou maior**. Você pode [definir a versão do Node.js](https://vercel.com/changelog/node-js-version-now-customizable-in-the-project-settings) usada durante a Etapa de Build e Funções Serverless pela página "General" em "Project Settings".
+Astro v2.0 remove suporte para Node 14, então certifique-se de que seu projeto está utilizando **Node `18.14.1` ou maior**. Você pode [definir a versão do Node.js](https://vercel.com/changelog/node-js-version-now-customizable-in-the-project-settings) usada durante a Etapa de Build e Funções Serverless pela página "General" em "Project Settings".
diff --git a/src/content/docs/pt-br/guides/integrations-guide.mdx b/src/content/docs/pt-br/guides/integrations-guide.mdx
index bc1dc1933f289..8b9e3c79b15c8 100644
--- a/src/content/docs/pt-br/guides/integrations-guide.mdx
+++ b/src/content/docs/pt-br/guides/integrations-guide.mdx
@@ -126,17 +126,17 @@ Para remover uma integração, primeiro desinstale a integração do seu projeto
```shell
- npm uninstall @astrojs/image
+ npm uninstall @astrojs/react
```
```shell
- pnpm uninstall @astrojs/image
+ pnpm uninstall @astrojs/react
```
```shell
- yarn remove @astrojs/image
+ yarn remove @astrojs/react
```
@@ -146,11 +146,11 @@ Depois, remova a integração do seu arquivo `astro.config.*`:
```js title="astro.config.mjs" del={3,7}
import { defineConfig } from 'astro/config'
-import image from "@astrojs/image";
+import react from "@astrojs/react";
export default defineConfig({
integrations: [
- image()
+ react()
]
})
```
diff --git a/src/content/docs/pt-br/guides/markdown-content.mdx b/src/content/docs/pt-br/guides/markdown-content.mdx
index 6c41fa67c052f..2e9ed87ff8e20 100644
--- a/src/content/docs/pt-br/guides/markdown-content.mdx
+++ b/src/content/docs/pt-br/guides/markdown-content.mdx
@@ -58,65 +58,6 @@ Provavelmente não está muito estiloso, porém o Markdown suporta:
📚 Leia mais sobre o [roteamento baseado em arquivos](/pt-br/core-concepts/routing/) do Astro ou opções para criar [rotas dinâmicas](/pt-br/core-concepts/routing/#rotas-dinâmicas).
-### Páginas de Rascunho
-
-`draft: true` é um valor opcional de frontmatter irá marcar uma individual página ou postagem Markdown ou MDX como "não publicada". Por padrão, essa página será:
-
-- excluída da build do site (a página não será construída)
-
-- retornada por `Astro.glob()` (visível na lista de postagens)
-
-```markdown {5}
----
-# src/pages/post/postagem-blog.md
-layout: ../../layouts/LayoutBase.astro
-title: Minha Postagem do Blog
-draft: true
----
-
-Esta é a postagem que eu estou fazendo no meu blog.
-
-Nenhuma página terá build feito para esta postagem.
-
-Para fazer a build e publicar esta postagem:
-
-- atualize o frontmatter para `draft: false` ou
-- remova a propriedade `draft` completamente.
-
-Porém, esta página _será_ retornada por quaisquer requisições `Astro.glob()` correspondentes.
-```
-
-Para excluir postagens de rascunho de serem inclusas no arquivo de postagens, ou listar as postagens mais recentes, você pode filtrar os resultados retornados pelo `Astro.glob()`:
-
-```js
-const postagens = await Astro.glob('../pages/postagens/*.md');
-const postagensSemRascunhos = postagens.filter((postagem) => !postagem.frontmatter.draft);
-```
-
-:::note[Usando coleções de conteúdo?]
-Essa funcionalidade não suporta coleções de conteúdo, entretanto você pode utilizar um [filtro de consulta de coleção](/pt-br/guides/content-collections/#filtrando-consultas-de-coleção) para filtrar seus rascunhos de postagens.
-:::
-
-#### Habilitando a build de páginas de rascunho
-
-Para habilitar a build de páginas de rascunho por padrão, atualize `astro.config.mjs` adicionando `drafts: true` em `markdown` ou na integração `mdx`:
-
-```js title="astro.config.mjs" ins={5, 8}
-import { defineConfig } from 'astro/config';
-
-export default defineConfig({
- markdown: {
- drafts: true,
- },
- integrations: [mdx({
- drafts: true,
- })],
-});
-```
-
-:::tip
-Você também pode passar a flag `--drafts` ao executar `astro build` para fazer a build de páginas de rascunho!
-:::
## Funcionalidades do Markdown
@@ -186,7 +127,7 @@ Por exemplo, para prevenir `<` de ser interpretado como o começo de um elemento
Adicionar a [integração MDX](/pt-br/guides/integrations-guide/mdx/) do Astro aprimora sua experiência de autoria com Markdown com variáveis JSX, expressões e componentes.
-Ela também adiciona funcionalidades extras ao MDX padrão, incluindo suporte para [frontmatter estilo Markdown no MDX](https://mdxjs.com/guides/frontmatter/). Isso te permite utilizar a maioria das funcionalidades integradas para Markdown do Astro como a propriedade [frontmatter `layout`](#frontmatter-layout) e a configuração de [páginas de rascunho](#páginas-de-rascunho).
+Ela também adiciona funcionalidades extras ao MDX padrão, incluindo suporte para [frontmatter estilo Markdown no MDX](https://mdxjs.com/guides/frontmatter/). Isso te permite utilizar a maioria das funcionalidades integradas para Markdown do Astro como a propriedade [frontmatter `layout`](#frontmatter-layout).
Arquivos `.mdx` devem ser escritos na [sintaxe do MDX](https://mdxjs.com/docs/what-is-mdx/#mdx-syntax) ao invés da sintaxe semelhante ao HTML do Astro.
diff --git a/src/content/docs/pt-br/guides/middleware.mdx b/src/content/docs/pt-br/guides/middleware.mdx
index 22e7b53b9d53c..a9e270525b193 100644
--- a/src/content/docs/pt-br/guides/middleware.mdx
+++ b/src/content/docs/pt-br/guides/middleware.mdx
@@ -45,7 +45,7 @@ Você pode importar e utilizar a função utilitária `defineMiddleware()` para
```ts
// src/middleware.ts
-import { defineMiddleware } from "astro/middleware";
+import { defineMiddleware } from "astro:middleware";
// `context` e `next` são tipados automaticamente
export const onRequest = defineMiddleware((context, next) => {
@@ -138,7 +138,7 @@ export const onRequest = async (context, next) => {
Múltiplos middlewares podem ser conectados em uma sequência ordenada utilizando [`sequence()`](#sequence):
```js title="src/middleware.js"
-import { sequence } from "astro/middleware";
+import { sequence } from "astro:middleware";
async function validacao(_, next) {
console.log("validação da requisição");
diff --git a/src/content/docs/pt-br/guides/rss.mdx b/src/content/docs/pt-br/guides/rss.mdx
index 9afe081bf01cf..ce36f06d90e81 100644
--- a/src/content/docs/pt-br/guides/rss.mdx
+++ b/src/content/docs/pt-br/guides/rss.mdx
@@ -47,7 +47,7 @@ O arquivo de exemplo abaixo `src/pages/rss.xml.js` vai criar um feed RSS em `sit
```js title="src/pages/rss.xml.js"
import rss from '@astrojs/rss';
-export function get(context) {
+export function GET(context) {
return rss({
// campo `
` no xml final
title: 'Blog do Buzz',
@@ -81,7 +81,7 @@ Para criar um feed RSS de páginas gerenciadas em [coleções de conteúdo](/pt-
import rss from '@astrojs/rss';
import { getCollection } from 'astro:content';
-export async function get(context) {
+export async function GET(context) {
const blog = await getCollection('blog');
return rss({
title: 'Blog do Buzz',
@@ -128,7 +128,7 @@ Essa função assume, mas não verifica, que todas as propriedades necessárias
```js title="src/pages/rss.xml.js" "pagesGlobToRssItems" "await pagesGlobToRssItems("
import rss, { pagesGlobToRssItems } from '@astrojs/rss';
-export async function get(context) {
+export async function GET(context) {
return rss({
title: 'Blog do Buzz',
description: 'O guia de um humilde Astronauta para as estrelas',
@@ -166,7 +166,7 @@ import sanitizeHtml from 'sanitize-html';
import MarkdownIt from 'markdown-it';
const parser = new MarkdownIt();
-export async function get(context) {
+export async function GET(context) {
const blog = await getCollection('blog');
return rss({
title: 'Blog do Buzz',
@@ -188,7 +188,7 @@ Ao utilizar importações de glob com Markdown, você pode utilizar o utilitári
import rss from '@astrojs/rss';
import sanitizeHtml from 'sanitize-html';
-export function get(context) {
+export function GET(context) {
const resultadoImportacaoPostagem = import.meta.glob('../postagens/**/*.md', { eager: true });
const postagens = Object.values(resultadoImportacaoPostagem);
return rss({
diff --git a/src/content/docs/pt-br/guides/server-side-rendering.mdx b/src/content/docs/pt-br/guides/server-side-rendering.mdx
index c9248e622d11e..cd9f64b4651a6 100644
--- a/src/content/docs/pt-br/guides/server-side-rendering.mdx
+++ b/src/content/docs/pt-br/guides/server-side-rendering.mdx
@@ -172,7 +172,7 @@ E para um endpoint:
```js title="src/pages/meuendpoint.js" {1}
export const prerender = true;
-export async function get() {
+export async function GET() {
return {
body: JSON.stringify({ message: `Este é meu endpoint estático` }),
};
@@ -186,7 +186,7 @@ Para um aplicação majoritariamente estática configurada como `output: hybrid`
```js title="src/pages/numeroaleatorio.js" {1}
export const prerender = false;
-export async function get() {
+export async function GET() {
let numero = Math.random();
return {
body: JSON.stringify({ numero, mensagem: `Aqui está um número aleatório: ${numero}` }),
diff --git a/src/content/docs/pt-br/guides/styling.mdx b/src/content/docs/pt-br/guides/styling.mdx
index 6f2764d526e56..979ef61efedea 100644
--- a/src/content/docs/pt-br/guides/styling.mdx
+++ b/src/content/docs/pt-br/guides/styling.mdx
@@ -41,11 +41,11 @@ Este CSS:
Compila para isto:
```astro
@@ -159,7 +159,7 @@ import MeuComponente from "../components/MeuComponente.astro"
Isso será vermelho!
```
-Esse padrão te permite estilizar componentes filhos diretamente. Astro irá passar o nome de classe com escopo do pai (e.x. `astro-HHNQFKH6`) através da prop `class` automaticamente, incluindo o filho no seu escopo de pai.
+Esse padrão te permite estilizar componentes filhos diretamente. Astro irá passar o nome de classe com escopo do pai (e.x. `astro-hhnqfkh6`) através da prop `class` automaticamente, incluindo o filho no seu escopo de pai. Note que esse padrão funciona apenas quando sua [opção `scopedStyleStrategy`](/pt-br/reference/configuration-reference/#scopedstylestrategy) é `'where'` ou `'class'`.
:::note[Classes com escopo de componentes pai]
Por conta da prop `class` incluir o filho no escopo do seu pai, é possível que estilos cascatem do pai para o filho. Para evitar que isso tenha efeitos colaterais indesejados, certifique-se de utilizar nomes de classe únicos no componente filho.
@@ -529,26 +529,38 @@ Se você estiver utilizando Tailwind, o [plugin typography](https://tailwindcss.
## Produção
-### Controle de pacote
+### Controle de bundle
-Quando o Astro faz a build do seu site para lançamento em produção, ele combina seu CSS em pedaços. Cada página no seu site é seu próprio pedaço, e adicionalmente, o CSS que é compartilhado entre múltiplas páginas é dividido em seus próprios pedaços para reutilização.
+Quando o Astro faz a build do seu site para lançamento em produção, ele minifica e combina seu CSS em pedaços. Cada página no seu site ganha seu próprio pedaço, e adicionalmente, o CSS que é compartilhado entre múltiplas páginas é dividido em seus próprios pedaços para reutilização.
-Em cada um dos seus arquivos HTML vai ter tags `` adicionadas, uma para cada pedaço que a página precisa.
+Contudo, quando você tem diversas páginas compartilhando estilos, alguns pedaços compartilhados podem se tornar realmente pequenos. Se todos eles fossem enviados separadamente, isso levaria a muitas requisições de folhas de estilo e afetaria a performance do site. Portanto, por padrão o Astro irá fazer link apenas daquelas no seu HTML acima de 4kB em tamanho como tags ``, enquanto adiciona inline as menores como `
+```
+
+### Removido: Planificação automática do valor de retorno de `getStaticPaths()`
+
+No Astro v2.x, o valor de retorno de [`getStaticPaths()`](/pt-br/reference/api-reference/#getstaticpaths) era automaticamente planificado para te permitir retornar um array sem nenhum erro.
+
+Astro v3.0 remove a planificação automática do resultado de `getStaticPaths()`.
+
+#### O que devo fazer?
+
+Se você está retornando um array de arrays no lugar de um array de _objetos_ (como é esperado), `.flatMap` e `.flat` agora devem ser usados para garantir que você está retornando um array plano.
+
+Uma [mensagem de erro indicando que o valor de retorno de `getStaticPath()` deve ser um array de objetos](/pt-br/reference/errors/invalid-get-static-paths-entry/#what-went-wrong) será providenciado se você precisa atualizar seu código.
+
+### Movido: `astro check` agora requer um pacote externo
+
+No Astro v2.x, [`astro check`](/pt-br/reference/cli-reference/#astro-check) era incluso com o Astro por padrão, e suas dependências eram embutidas no Astro. Isso significava em um pacote maior, independente se você usava ou não `astro check`. Isso também te prevenia de ter controle sobre a versão do TypeScript e o Servidor de Linguagem do Astro a se utilizar.
+
+
+Astro v3.0 move o comando `astro check` para fora do núcleo do Astro e agora requer o pacote externo `@astrojs/check`. Adicionalmente, você deve instalar `typescript` em seu projeto para utilizar o comando `astro check`.
+
+#### O que devo fazer?
+
+Execute o comando `astro check` após atualizar para o Astro v3.0 e siga as instruções para instalar as dependências necessárias, ou manualmente instale `@astrojs/check` e `typescript` em seu projeto.
+
+### Depreciado: `build.excludeMiddleware` e `build.split`
+
+No Astro v2.x, `build.excludeMiddleware` e `build.split` eram utilizados para mudar como arquivos específicos eram emitidos ao utilizar um adaptador no modo SSR.
+
+Astro v3.0 substitui essas opções de configuração da build com novas [opções de configuração de adaptadores SSR](/pt-br/guides/integrations-guide/#integrações-oficiais) para realizar as mesmas tarefas: `edgeMiddleware` e `functionPerRoute`.
+
+#### O que devo fazer?
+
+Atualize o arquivo de configuração do Astro para agora utilizar as novas opções **na configuração do adaptador** diretamente.
+
+```js title="astro.config.mjs" del={5-7} ins={9}
+import { defineConfig } from "astro/config";
+import vercel from "@astrojs/vercel/serverless";
+
+export default defineConfig({
+ build: {
+ excludeMiddleware: true
+ },
+ adapter: vercel({
+ edgeMiddleware: true
+ }),
+});
+```
+
+```js title="astro.config.mjs" del={5-7} ins={9}
+import { defineConfig } from "astro/config";
+import netlify from "@astrojs/netlify/functions";
+
+export default defineConfig({
+ build: {
+ split: true
+ },
+ adapter: netlify({
+ functionPerRoute: true
+ }),
+});
+```
+
+### Depreciado: `markdown.drafts`
+
+No Astro v2.x, a configuração `markdown.drafts` te permitia ter páginas de rascunho que eram disponibilizadas ao executar o servidor de desenvolvimento, mas não na build para produção.
+
+Astro v3.0 deprecia essa funcionalidade em favor do método de coleções de conteúdo de manipular páginas de rascunho filtrando manualmente no lugar, o que te dá mais controle sobre a funcionalidade.
+
+#### O que devo fazer?
+
+Para continuar a marcar algumas páginas em seu projeto como rascunhos, [migue para coleções de conteúdo](/pt-br/guides/content-collections/#migrando-do-roteamento-baseado-em-arquivos) e [filtre páginas manualmente](/pt-br/guides/content-collections/#filtrando-consultas-de-coleção) com a propriedade do frontmatter `draft: true` no lugar.
+
+### Depreciado: retornar um objeto simples de endpoints
+
+No Astro v2.x, endpoints podiam retornar um objeto simples, que seria convertido para uma resposta JSON.
+
+Astro v3.0 deprecia esse comportamento em favor de retornar um objeto `Response` diretamente.
+
+#### O que devo fazer?
+
+Atualize seus endpoints para reotrnar um objeto `Response` diretamente.
+
+```ts title="endpoint.json.ts" del={2} ins={3}
+export async function GET() {
+ return { body: { "titulo": "Blog do Bob" }};
+ return new Response(JSON.stringify({ "titulo": "Blog do Bob" }));
+}
+```
+
+Se você realmente precisar manter o formato anterior, você pode utilizar o objeto `ResponseWithEncoding`, mas isso será depreciado no futuro.
+
+```ts title="endpoint.json.ts" del={2} ins={3}
+export async function GET() {
+ return { body: { "titulo": "Blog do Bob" } };
+ return new ResponseWithEncoding({ body: { "titulo": "Blog do Bob" }});
+}
+```
+
+
+### Padrão modificado: porta `3000`
+
+No Astro v2.x, Astro era executado na porta `3000` por padrão.
+
+Astro v3.0 muda a [porta padrão](/pt-br/reference/cli-reference/#--port) para `4321`. 🚀
+
+#### O que devo fazer?
+
+Atualize quaisquer referências a `localhost:3000`, por exemplo em testes ou em seu `README`, para refletir a nova porta `localhost:4321`.
+
+
+### Padrão modificado: import.meta.env.BASE_URL `trailingSlash`
+
+No Astro v2.x, `import.meta.env.BASE_URL` anexava sua opção [`base`](/pt-br/reference/configuration-reference/#base) com [`trailingSlash`](/pt-br/reference/configuration-reference/#trailingslash) por padrão. `trailingSlash: "ignore"` também anexava com uma barra final.
+
+Astro v3.0 não mais anexa `import.meta.env.BASE_URL` com uma barra final por padrão, nem quando `trailingSlash: "ignore"` é definido. (O comportamento existente de `base` em combinação com `trailingSlash: "always"` ou `trailingSlash: "never"` não mudou.)
+
+#### O que devo fazer?
+
+Se sua `base` já tem uma barra final, nenhuma mudança é necessária.
+
+Se sua `base` não tem uma barra final, adicione uma se você deseja preservar o comportamento padrão anterior (ou `trailingSlash: "ignore"`):
+
+```js title="astro.config.mjs" del={4} ins={5}
+import { defineConfig } from "astro/config";
+
+export default defineConfig({
+ base: 'minha-base',
+ base: 'minha-base/',
+});
+```
+
+### Padrão modificado: `compressHTML`
+
+No Astro v2.x, Astro apenas comprimia seu HTML emitido quando [`compressHTML`](/pt-br/reference/configuration-reference/#compresshtml) era explicitamente definido como `true`. O valor padrão era `false`.
+
+Astro v3.0 agora comprime HTML emitido por padrão.
+
+#### O que devo fazer?
+
+Agora você pode remover `compressHTML: true` de sua configuração já que esse é o novo comportamento padrão.
+
+```js title="astro.config.mjs" del={4}
+import { defineConfig } from "astro/config";
+
+export default defineConfig({
+ compressHTML: true
+})
+```
+
+Agora você deve definir `compressHTML: false` para optar por sair da compressão de HTML.
+
+### Padrão modificado: `scopedStyleStrategy`
+
+No Astro v2.x, o valor padrão de [`scopedStyleStrategy`](/pt-br/reference/configuration-reference/#scopedstylestrategy) era `"where"`.
+
+Astro v3.0 introduz um novo valor padrão: `"attribute"`. Por padrão, estilos agora são aplicados utilizando atributos `data-*`.
+
+#### O que devo fazer?
+
+Para manter o [escopo dos estilos](/pt-br/guides/styling/#estilos-com-escopo), atualize o arquivo de configuração para o valor padrão anterior:
+
+
+```js title="astro.config.mjs" ins={4}
+import { defineConfig } from "astro/config";
+
+export default defineConfig({
+ scopedStyleStrategy: "where"
+})
+```
+
+### Padrão modificado: `inlineStyleSheets`
+
+No Astro v2.x, todas as folhas de estilo foram enviadas como tags link por padrão. Você poderia optar por adicioná-las inline em tags `