alexnguyennz / astro-aws-amplify

Astro adapter for Astro SSR deployments on AWS Amplify
https://www.astroawsamplify.com
MIT License
31 stars 9 forks source link

getting too much size of build #23

Open TheElegantCoding opened 6 months ago

TheElegantCoding commented 6 months ago

adding mv node_modules ./.amplify-hosting/compute/default is not the correct way to add the adapter you can get this The size of the build output (297310198) exceeds the max allowed size of 230686720 bytes. Please reduce the size of your build output

alexnguyennz commented 6 months ago

Hi thanks for reporting.

I see, due to the way pnpm works, I think it should get around that issue if you're willing to switch to it. Otherwise feel free to make a PR for any better solutions as I'm unsure of any. Cheers.

tonicastillo commented 6 months ago

Hi guys. Did you find a solution? I have the same problem. Thanks!

alexnguyennz commented 6 months ago

Hi guys. Did you find a solution? I have the same problem. Thanks!

Hi do you have a project I can look at?

tonicastillo commented 5 months ago

In the end I was able to transfer some libraries to dev, and it stopped giving me problems. Thank you anyway.

TheElegantCoding commented 5 months ago

i actually use bun to install dependencies not sure if that can be the problem, @alexnguyennz can you update the readme and make a test with bun ?

also here thinking about something the 404 page can be done with .htaccess ?, i remember fix in some project this

# Custom error pages
ErrorDocument 404 /404.html
alexnguyennz commented 5 months ago

I wasn't aware Bun could be used with Amplify - what sort of build spec are you using? I see now Bun can be used with Windows so I could try this.

Searching htaccess with Amplify doesn't seem to have any results unfortunately, except for this post saying it's not used.

TheElegantCoding commented 5 months ago

this is my configuration to set my environment normally, i don't run astro with Bun because is still experimental and don't want some unexpected errors, in linex environment i use the same linux 2023

version: 1
frontend:
  phases:
    preBuild:
      commands:
        - nvm install 20.10.0
        - nvm use 20.10.0
        - npm i -g pnpm
        - npm install -g bun
        - bun i
    build:
      commands:
        - pnpm build
  artifacts:
    baseDirectory: dist
    files:
      - '**/*'
cache:
  paths:
    - node_modules/**/*
ErikCH commented 5 months ago

Hello! It's Erik from AWS Amplify. We have a troubleshooting guide if your bundle size is over the 220mb limit. https://docs.aws.amazon.com/amplify/latest/userguide/troubleshooting-ssr-deployment.html#build-output-too-large

alexnguyennz commented 5 months ago

Thanks Erik, this is helpful.

mauerbac commented 2 months ago

I was able to reduce my bundle size by putting the package.json to chatgpt and asking it to look for packages to remove and put in devdependencies

phoenixg commented 2 months ago

If I just want to deploy over the max allowed size, is there a solution now?

camiloux commented 1 month ago

Here's a setting that worked for me and removed unnecessary build size by eliminating the step of copying the node_modules. Instead, you can simply reinstall the necessary dependencies directly in the app folder after the build. This helps keep the build smaller and more efficient:

version: 1
frontend:
  phases:
    preBuild:
      commands:
        - npm i
    build:
      commands:
        - env >> .env
        - npm run build
        - mv .env ./.amplify-hosting/compute/default/.env
        - cp package.json ./.amplify-hosting/compute/default/package.json
        - cd .amplify-hosting/compute/default/
        # Reinstall only production dependencies directly in the app folder to reduce size
        - npm install --production
  artifacts:
    baseDirectory: .amplify-hosting
    files:
      - "**/*"
  cache:
    paths:
      - node_modules/**/*
patrik-simunic-cz commented 1 month ago

I was able to reduce my bundle size by putting the package.json to chatgpt and asking it to look for packages to remove and put in devdependencies

😂 lol