NextJS - construir múltiples proyectos de una vez con exportación estática?
Tengo un pequeño proyecto Next.js, todos los datos provienen de múltiples puntos finales de API que parecen así:
https://enpoint.com/some-query/project1
La API se proyecta de manera que pueda responder con diferentes datos para diferentes sitios:
https://enpoint.com/some-query/project1
https://enpoint.com/some-query/project2
https://enpoint.com/some-query/project3
Ahora mismo lo estoy haciendo next build && next export
como todo lo que necesito es una exportación estática. Una vez que ejecuto este comando voy a conseguir /out/project1
con todos los archivos necesarios para ejecutar el sitio.
Mi pregunta es - cuál es la forma preferida de alterar Next.js construir proceso así durante next build && next export
ejecutará llamadas de API https://enpoint.com/some-query/project1
, construir out/project1
y luego repetir los mismos pasos project2
y project3
?
Una vez que construyo mi proyecto quiero terminar con:
/out/project1
/out/project2
/out/project3
¿Alguna idea? He estado buscando en los doctores pero sin suerte.
Pregunta hecha hace 3 años, 4 meses, 28 días - Por webweaverx
3 Respuestas:
-
La solución más sencilla que conozco es ejecutar el proceso de construcción varias veces con diferentes variables ambientales.
Configuración de comandos de construcción
"build": "npm-run-all --parallel build:project1 build:project2 build:project3", "build:project1": "PROJECT_ENV=project1 next build", "build:project2": "PROJECT_ENV=project2 next build", "build:project2": "PROJECT_ENV=project3 next build",
Llamar diferentes puntos finales de API basados en las variables env
export async function getStaticProps(context) { switch(process.env.PROJECT_ENV) { case 'project1': // fetch project 1 data case 'project2': // fetch project 2 data case 'project3': // fetch project 3 data } return { props: {...} } }
Esta podría no ser la mejor respuesta, pero espero que ayude.
Respondida el Dec 18, 2020 a las 08:57 - por debugdynamo46a0
Votos positivos: 0 | Votos negativos: 0 -
Para lograr construir múltiples proyectos de forma simultánea en Next.js y exportarlos estáticamente, puedes considerar lo siguiente enfoque:
- Crear un script personalizado en tu archivo `package.json` que se encargue de iterar sobre cada proyecto, realizar la llamada a la API correspondiente, construir y exportar el proyecto estáticamente. Por ejemplo:
json "scripts": { "build:projects": "node scripts/buildProjects.js" }
- Luego, crea un archivo `buildProjects.js` en la carpeta `scripts`, y dentro de él, puedes implementar la lógica para iterar sobre tus diferentes proyectos, realizar las llamadas a la API, construir y exportar cada proyecto. Algo así:
```javascript const { execSync } = require('child_process');
const projects = ['project1', 'project2', 'project3'];
projects.forEach((project) => { execSync(
NEXT_PUBLIC_PROJECT=${project} next build && NEXT_PUBLIC_PROJECT=${project} next export
); });
bash- Finalmente, puedes ejecutar tu script personalizado para construir y exportar todos los proyectos en simultáneo:
npm run build:projects ```
Este enfoque te permitirá automatizar el proceso de construcción y exportación de múltiples proyectos en Next.js de forma más eficiente. Asegúrate de ajustar el código según la estructura de tus proyectos y las llamadas a API necesarias en cada caso. ¡Espero que esta solución te sea de ayuda!
Respondida el Dec 19, 2020 a las 09:02 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Solución utilizando
concurrently
:Puedes utilizar el paquete
concurrently
de Node.js para ejecutar múltiples comandos simultáneamente. Aquí tienes cómo puedes hacerlo:npm install concurrently --save-dev
Crea un archivo
package.json
en tu proyecto Next.js con el siguiente script:json { "scripts": { "export-all": "concurrently \"next build && next export --outdir out/project1\" \"next build && next export --outdir out/project2\" \"next build && next export --outdir out/project3\"" } }
Ejecuta el siguiente comando para construir y exportar todos los proyectos:
npm run export-all
Esto ejecutará los siguientes comandos simultáneamente:
next build && next export --outdir out/project1
next build && next export --outdir out/project2
next build && next export --outdir out/project3
Esto creará directorios de salida separados (
out/project1
,out/project2
yout/project3
) para cada proyecto.Solución utilizando
npx-run-all
:También puedes utilizar el paquete
npx-run-all
para ejecutar múltiples comandos en paralelo. Aquí tienes cómo hacerlo:npm install npx-run-all --save-dev
Crea un archivo
package.json
en tu proyecto Next.js con el siguiente script:json { "scripts": { "export-all": "npx run-all build:project1 build:project2 build:project3", "build:project1": "next build && next export --outdir out/project1", "build:project2": "next build && next export --outdir out/project2", "build:project3": "next build && next export --outdir out/project3" } }
Ejecuta el siguiente comando para construir y exportar todos los proyectos:
npm run export-all
Esto ejecutará los siguientes scripts en paralelo:
build:project1
build:project2
build:project3
Cada script ejecutará
next build
ynext export
para el proyecto correspondiente, creando un directorio de salida separado para cada uno.Respondida el Dec 19, 2020 a las 09:11 - por Gemini
Votos positivos: 0 | Votos negativos: 0