Update Next.js configuration: adjust asset prefix and enable unoptimi… #11
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# .github/workflows/nextjs.yml | |
name: Deploy Next.js site to Pages | |
on: | |
push: | |
branches: ["main"] | |
workflow_dispatch: | |
permissions: | |
contents: read | |
pages: write | |
id-token: write | |
concurrency: | |
group: "pages" | |
cancel-in-progress: false | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out repository | |
uses: actions/checkout@v4 | |
- name: Detect package manager | |
id: detect-package-manager | |
run: | | |
cd template-base | |
if [ -f "yarn.lock" ]; then | |
echo "manager=yarn" >> $GITHUB_OUTPUT | |
echo "command=install" >> $GITHUB_OUTPUT | |
echo "runner=yarn" >> $GITHUB_OUTPUT | |
exit 0 | |
elif [ -f "package.json" ]; then | |
echo "manager=npm" >> $GITHUB_OUTPUT | |
echo "command=ci" >> $GITHUB_OUTPUT | |
echo "runner=npx --no-install" >> $GITHUB_OUTPUT | |
exit 0 | |
else | |
echo "Unable to determine package manager" | |
exit 1 | |
fi | |
- name: Setup Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "20" | |
cache: ${{ steps.detect-package-manager.outputs.manager }} | |
# Lockfiles are in template-base | |
cache-dependency-path: | | |
template-base/package-lock.json | |
template-base/yarn.lock | |
# (Optional) We can remove "Setup Pages" or keep it if you want | |
# some config injection, but it's not strictly needed for output: 'export'. | |
# - name: Setup Pages | |
# uses: actions/configure-pages@v5 | |
- name: Restore .next/cache | |
uses: actions/cache@v4 | |
with: | |
path: template-base/.next/cache | |
key: ${{ runner.os }}-nextjs-${{ hashFiles('template-base/**/package-lock.json', 'template-base/**/yarn.lock') }}-${{ hashFiles('template-base/**/*.js', 'template-base/**/*.jsx', 'template-base/**/*.ts', 'template-base/**/*.tsx') }} | |
restore-keys: | | |
${{ runner.os }}-nextjs-${{ hashFiles('template-base/**/package-lock.json', 'template-base/**/yarn.lock') }}- | |
- name: Install dependencies | |
run: cd template-base && ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }} | |
- name: Build (static export) | |
run: cd template-base && ${{ steps.detect-package-manager.outputs.runner }} next build | |
# With output: 'export' in next.config, | |
# next build automatically exports to `template-base/out`. | |
- name: Show contents of out (debug) | |
run: ls -la template-base/out | |
- name: Upload artifact to Pages | |
uses: actions/upload-pages-artifact@v3 | |
with: | |
path: template-base/out | |
deploy: | |
environment: | |
name: github-pages | |
url: ${{ steps.deployment.outputs.page_url }} | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- name: Deploy to GitHub Pages | |
id: deployment | |
uses: actions/deploy-pages@v4 |