diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index 4db1670..80616fe 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -2,6 +2,7 @@ name: Deploy website to GitHub Pages env: WC_HUGO_VERSION: '0.148.2' + NODE_VERSION: '20' on: # Trigger the workflow every time you push to the `main` branch @@ -29,30 +30,62 @@ jobs: - name: Checkout uses: actions/checkout@v4 with: - # Fetch history for Hugo's .GitInfo and .Lastmod + # Fetch history for Hugo's .GitInfo and .Lastmod fetch-depth: 0 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Setup pnpm + if: hashFiles('package.json') != '' + uses: pnpm/action-setup@v4 + + - name: Install dependencies + run: | + # Install Tailwind CLI if package.json exists + if [ -f "package.json" ]; then + echo "Installing Tailwind dependencies..." + pnpm install || npm install + fi + - name: Setup Hugo - uses: peaceiris/actions-hugo@v2 + uses: peaceiris/actions-hugo@v3 with: hugo-version: ${{ env.WC_HUGO_VERSION }} extended: true - - uses: actions/cache@v3 + + - uses: actions/cache@v4 with: - path: /tmp/hugo_cache_runner/ - key: ${{ runner.os }}-hugomod-${{ hashFiles('**/go.mod') }} + path: | + /tmp/hugo_cache_runner/ + node_modules/ + modules/*/node_modules/ + key: ${{ runner.os }}-hugomod-${{ hashFiles('**/go.mod', '**/package-lock.json', '**/pnpm-lock.yaml') }} restore-keys: | ${{ runner.os }}-hugomod- + - name: Setup Pages id: pages uses: actions/configure-pages@v5 + - name: Build with Hugo env: HUGO_ENVIRONMENT: production run: | echo "Hugo Cache Dir: $(hugo config | grep cachedir)" hugo --minify --baseURL "${{ steps.pages.outputs.base_url }}/" - - name: Generate Pagefind search index - run: npx pagefind --site "public" + + - name: Generate Pagefind search index (if applicable) + run: | + # Check if site uses Pagefind + if [ -f "package.json" ] && grep -q "pagefind" package.json; then + pnpm dlx pagefind --source "public" || npx pagefind --source "public" + elif [ -f "netlify.toml" ] && grep -q "pagefind" netlify.toml; then + pnpm dlx pagefind --source "public" || npx pagefind --source "public" + fi + - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: