Computer Science Club of the University of Waterloo's website. https://csclub.uwaterloo.ca
Go to file
Amy Wang 443925190e
continuous-integration/drone/push Build is passing Details
Improve image optimization run-time and memory usage (#457)
This PR aims to resolve the issues surrounding the optimize-images script, at least in the short term, in order to unblock other work.

**Problems:** Our optimize-images script was taking a very long time to run (~7 minutes in CI, when successful). This led to two problems:
1. It was near impossible to run the script locally.
2. CI jobs would often get killed on the optimize-images step.

**Solutions:**
1. Resize the images in `images/events` prior to optimizing them, similar to what is done for the images in `images/team`. This solution on its own reduced the run-time of the script to ~30 seconds locally on Amy's laptop, which is comparable to the run-time of the script back when it was originally written.
2. EDIT: Copy/resize/optimize the images in batches of 32 at a time. The reason why the CI job was being killed is because the script would run out of memory, however this change should resolve that while also keeping build times reasonable (~30 sec locally/when deploying on caffeine, ~3 min in CI). ~~As a temporary fix, this PR also replaces the images in `images/events` with their resized + optimized versions. (For some unknown reason, Solution 1 is not sufficient to solve Problem 2.)~~

This PR also adds some logging to the script so we can get a (slightly) better sense of where the script is getting stuck.

Related issue: #456

Co-authored-by: Amy <a258wang@uwaterloo.ca>
Reviewed-on: #457
Reviewed-by: Shahan Neda <snedadah@csclub.uwaterloo.ca>
2022-06-04 19:31:00 -04:00
.vscode Fix constitution formatting (#216) 2021-08-30 09:12:39 -04:00
components Add endDate to events (#446) 2022-05-25 20:58:12 -04:00
content Add Haley's Blurb (#455) 2022-06-01 21:17:49 -04:00
docs Docs for how pages work (#391) 2022-03-10 02:47:15 -05:00
hooks Meet the Team page (#94) 2021-08-23 11:11:42 -04:00
images Add Bondfire event (#447) 2022-05-23 02:47:00 -04:00
lib Add endDate to events (#446) 2022-05-25 20:58:12 -04:00
pages Add endDate to events (#446) 2022-05-25 20:58:12 -04:00
public Image Optimization Script (#348) 2021-10-31 16:58:14 -04:00
scripts Improve image optimization run-time and memory usage (#457) 2022-06-04 19:31:00 -04:00
.drone.yml Generate members list (#354) 2021-11-22 12:47:00 -05:00
.eslintignore Add mdx support and playground 2021-04-26 19:16:55 -04:00
.eslintrc.js Use eslint-plugin-import to bring some order to the mess (#132) 2021-08-13 04:16:37 -04:00
.gitignore Image Optimization Script (#348) 2021-10-31 16:58:14 -04:00
README.md Final changes for deploying (#279) 2021-09-03 18:34:56 -04:00
deploy-demo.bash Script to deploy site to your CSC website (#99) 2021-08-03 19:17:08 -04:00
deploy.sh Generate members list (#354) 2021-11-22 12:47:00 -05:00
next-env.d.ts Upgrade Next, React, TypeScript (#91) 2021-08-01 17:54:25 -04:00
next.config.js Update content for advice pages (#299) 2021-09-11 16:00:22 -04:00
package-lock.json Add Multiple News Items on Homepage and Single News Item Page (Closes #281) (#390) 2022-02-23 00:15:37 -05:00
package.json Add Multiple News Items on Homepage and Single News Item Page (Closes #281) (#390) 2022-02-23 00:15:37 -05:00
postcss.config.json Convert rems to px and use calc to convert on build time 2021-05-24 18:58:28 +00:00
renovate.json Force node 16+ and npm 7+ in renovate (#192) 2021-08-28 00:05:56 -04:00
tsconfig.json Dynamically generate event calendar (#332) 2021-09-27 16:20:18 -04:00
types.d.ts Add Multiple News Items on Homepage and Single News Item Page (Closes #281) (#390) 2022-02-23 00:15:37 -05:00
utils.ts Warning Header (Closes #205) (#394) 2022-02-22 23:29:53 -05:00

README.md

Development

Dependencies

Make sure that you have node >= 14 and npm >= 7. Node 14 ships with npm v6, so if you're using node 14, you would need to upgrade npm. Alternatively you could also upgrade to node 16, which ships with npm 7.

How to upgrade npm: npm i -g npm

Local

Production

  • npm install to install project dependencies
  • npm run build to generate html/css/js
  • npm run export to move the built files (along with assets in the public directory) to the /out directory
  • Use your favourite web server to host the files in the /out directory. (A very simple one would be python -m http.server - not sure if it should actually be used for production :P)

Deploy

  • groups (make sure you're in the www group)
  • curl -o- https://git.csclub.uwaterloo.ca/www/www-new/raw/branch/main/deploy.sh | bash (run on caffeine)