From 5cbf08225566a37df09a5c0a11d7d6c7ef6861ba Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Mon, 11 Mar 2024 19:48:42 -0400 Subject: [PATCH] fix: use webpack for npm dependencies --- .github/workflows/build.yml | 13 ++----- .gitignore | 6 ++-- package.json | 10 ++++++ scripts/build.sh | 23 +++++++++++++ {dist => src}/.keep | 0 {dist => src}/.nojekyll | 0 {dist => src}/CNAME | 0 .../assets/images/AdobeStock_306976163.jpeg | Bin .../images/AdobeStock_306976163_1920x1280.jpg | Bin .../assets/images/AdobeStock_372471479.jpeg | Bin .../images/AdobeStock_372471479_1920x1280.jpg | Bin .../assets/images/AdobeStock_465916245.jpeg | Bin .../images/AdobeStock_465916245_1920x1080.jpg | Bin {dist => src}/assets/images/favicon.ico | Bin {dist => src}/assets/images/logo-56x56.png | Bin {dist => src}/assets/images/logo-64x64.png | Bin {dist => src}/assets/images/og-image.png | Bin {dist => src}/css/custom.css | 0 {dist => src}/css/logos.css | 0 {dist => src}/dev.html | 12 +++---- {dist => src}/discord.html | 8 ++--- {dist => src}/feedback.html | 8 ++--- {dist => src}/index.html | 12 +++---- {dist => src}/js/crowdin.js | 0 {dist => src}/js/crowdin_web_widget.js | 0 {dist => src}/js/dev_dashboard.js | 0 {dist => src}/js/discord.js | 0 {dist => src}/js/footer.js | 0 {dist => src}/js/levenshtein_distance.js | 0 {dist => src}/js/navbar.js | 0 {dist => src}/js/projects.js | 0 {dist => src}/js/ranking_sorter.js | 0 {dist => src}/js/sleep.js | 0 {dist => src}/privacy.html | 8 ++--- {dist => src}/support.html | 10 +++--- {dist => src}/terms.html | 8 ++--- webpack.config.js | 32 ++++++++++++++++++ 37 files changed, 102 insertions(+), 48 deletions(-) create mode 100644 scripts/build.sh rename {dist => src}/.keep (100%) rename {dist => src}/.nojekyll (100%) rename {dist => src}/CNAME (100%) rename {dist => src}/assets/images/AdobeStock_306976163.jpeg (100%) rename {dist => src}/assets/images/AdobeStock_306976163_1920x1280.jpg (100%) rename {dist => src}/assets/images/AdobeStock_372471479.jpeg (100%) rename {dist => src}/assets/images/AdobeStock_372471479_1920x1280.jpg (100%) rename {dist => src}/assets/images/AdobeStock_465916245.jpeg (100%) rename {dist => src}/assets/images/AdobeStock_465916245_1920x1080.jpg (100%) rename {dist => src}/assets/images/favicon.ico (100%) rename {dist => src}/assets/images/logo-56x56.png (100%) rename {dist => src}/assets/images/logo-64x64.png (100%) rename {dist => src}/assets/images/og-image.png (100%) rename {dist => src}/css/custom.css (100%) rename {dist => src}/css/logos.css (100%) rename {dist => src}/dev.html (94%) rename {dist => src}/discord.html (92%) rename {dist => src}/feedback.html (91%) rename {dist => src}/index.html (97%) rename {dist => src}/js/crowdin.js (100%) rename {dist => src}/js/crowdin_web_widget.js (100%) rename {dist => src}/js/dev_dashboard.js (100%) rename {dist => src}/js/discord.js (100%) rename {dist => src}/js/footer.js (100%) rename {dist => src}/js/levenshtein_distance.js (100%) rename {dist => src}/js/navbar.js (100%) rename {dist => src}/js/projects.js (100%) rename {dist => src}/js/ranking_sorter.js (100%) rename {dist => src}/js/sleep.js (100%) rename {dist => src}/privacy.html (97%) rename {dist => src}/support.html (98%) rename {dist => src}/terms.html (97%) create mode 100644 webpack.config.js diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9cd3cb1d..1a5d8a58 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -31,17 +31,8 @@ jobs: - name: Build website run: | - # install npm dependencies - npm install - - # empty contents of gh-pages - rm -f -r ./gh-pages/* - - # move contents of dist to gh-pages - mv -f ./dist/* ./gh-pages/ - - # move node_modules directory to gh-pages - mv -f ./node_modules/ ./gh-pages/ + sudo chmod +x ./scripts/build.sh + ./scripts/build.sh - name: Upload Artifacts if: ${{ github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' }} diff --git a/.gitignore b/.gitignore index d0b384d7..6cdc111b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,8 @@ # ignore JetBrains project .idea/ +dist/ + # ignore node modules node_modules/ package-lock.json - -# ignore duplicated dist folder for localization -dist/en -dist/es-ES diff --git a/package.json b/package.json index de4df689..af9cbc08 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,17 @@ { + "scripts": { + "build": "webpack" + }, "dependencies": { "@fortawesome/fontawesome-free": "6.6.0", "bootstrap": "5.3.3", "jquery": "3.7.1" + }, + "devDependencies": { + "css-loader": "6.10.0", + "mini-css-extract-plugin": "2.8.1", + "script-loader": "0.7.2", + "webpack": "5.90.3", + "webpack-cli": "5.1.4" } } diff --git a/scripts/build.sh b/scripts/build.sh new file mode 100644 index 00000000..2c43df9d --- /dev/null +++ b/scripts/build.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +# if ./dist exists, remove it entirely +if [ -d "./dist" ]; then + rm -rf ./dist +fi + +# if ./gh-pages exists, remove the contents +if [ -d "./gh-pages" ]; then + rm -rf ./gh-pages/* +fi + +# copy ./src directory to ./dist +cp -r ./src ./dist + +# install npm dependencies +npm install +npm run build + +# copy ./dist directory to ./gh-pages +if [ -d "./gh-pages" ]; then + mv -f ./dist/* ./gh-pages/ +fi diff --git a/dist/.keep b/src/.keep similarity index 100% rename from dist/.keep rename to src/.keep diff --git a/dist/.nojekyll b/src/.nojekyll similarity index 100% rename from dist/.nojekyll rename to src/.nojekyll diff --git a/dist/CNAME b/src/CNAME similarity index 100% rename from dist/CNAME rename to src/CNAME diff --git a/dist/assets/images/AdobeStock_306976163.jpeg b/src/assets/images/AdobeStock_306976163.jpeg similarity index 100% rename from dist/assets/images/AdobeStock_306976163.jpeg rename to src/assets/images/AdobeStock_306976163.jpeg diff --git a/dist/assets/images/AdobeStock_306976163_1920x1280.jpg b/src/assets/images/AdobeStock_306976163_1920x1280.jpg similarity index 100% rename from dist/assets/images/AdobeStock_306976163_1920x1280.jpg rename to src/assets/images/AdobeStock_306976163_1920x1280.jpg diff --git a/dist/assets/images/AdobeStock_372471479.jpeg b/src/assets/images/AdobeStock_372471479.jpeg similarity index 100% rename from dist/assets/images/AdobeStock_372471479.jpeg rename to src/assets/images/AdobeStock_372471479.jpeg diff --git a/dist/assets/images/AdobeStock_372471479_1920x1280.jpg b/src/assets/images/AdobeStock_372471479_1920x1280.jpg similarity index 100% rename from dist/assets/images/AdobeStock_372471479_1920x1280.jpg rename to src/assets/images/AdobeStock_372471479_1920x1280.jpg diff --git a/dist/assets/images/AdobeStock_465916245.jpeg b/src/assets/images/AdobeStock_465916245.jpeg similarity index 100% rename from dist/assets/images/AdobeStock_465916245.jpeg rename to src/assets/images/AdobeStock_465916245.jpeg diff --git a/dist/assets/images/AdobeStock_465916245_1920x1080.jpg b/src/assets/images/AdobeStock_465916245_1920x1080.jpg similarity index 100% rename from dist/assets/images/AdobeStock_465916245_1920x1080.jpg rename to src/assets/images/AdobeStock_465916245_1920x1080.jpg diff --git a/dist/assets/images/favicon.ico b/src/assets/images/favicon.ico similarity index 100% rename from dist/assets/images/favicon.ico rename to src/assets/images/favicon.ico diff --git a/dist/assets/images/logo-56x56.png b/src/assets/images/logo-56x56.png similarity index 100% rename from dist/assets/images/logo-56x56.png rename to src/assets/images/logo-56x56.png diff --git a/dist/assets/images/logo-64x64.png b/src/assets/images/logo-64x64.png similarity index 100% rename from dist/assets/images/logo-64x64.png rename to src/assets/images/logo-64x64.png diff --git a/dist/assets/images/og-image.png b/src/assets/images/og-image.png similarity index 100% rename from dist/assets/images/og-image.png rename to src/assets/images/og-image.png diff --git a/dist/css/custom.css b/src/css/custom.css similarity index 100% rename from dist/css/custom.css rename to src/css/custom.css diff --git a/dist/css/logos.css b/src/css/logos.css similarity index 100% rename from dist/css/logos.css rename to src/css/logos.css diff --git a/dist/dev.html b/src/dev.html similarity index 94% rename from dist/dev.html rename to src/dev.html index 7fbea246..8485a6f8 100644 --- a/dist/dev.html +++ b/src/dev.html @@ -25,16 +25,18 @@ - + - + + + - - + + @@ -131,8 +133,6 @@

Repos

- - diff --git a/dist/discord.html b/src/discord.html similarity index 92% rename from dist/discord.html rename to src/discord.html index 5410afef..47d94457 100644 --- a/dist/discord.html +++ b/src/discord.html @@ -25,11 +25,13 @@ - + + + - + @@ -57,8 +59,6 @@ - - diff --git a/dist/feedback.html b/src/feedback.html similarity index 91% rename from dist/feedback.html rename to src/feedback.html index 782d0ed4..d112b746 100644 --- a/dist/feedback.html +++ b/src/feedback.html @@ -25,11 +25,13 @@ - + + + - + @@ -55,8 +57,6 @@ - - diff --git a/dist/index.html b/src/index.html similarity index 97% rename from dist/index.html rename to src/index.html index 5e954df7..95a885de 100644 --- a/dist/index.html +++ b/src/index.html @@ -25,16 +25,18 @@ - + - + + + - - + + @@ -344,8 +346,6 @@

Donate

- - diff --git a/dist/js/crowdin.js b/src/js/crowdin.js similarity index 100% rename from dist/js/crowdin.js rename to src/js/crowdin.js diff --git a/dist/js/crowdin_web_widget.js b/src/js/crowdin_web_widget.js similarity index 100% rename from dist/js/crowdin_web_widget.js rename to src/js/crowdin_web_widget.js diff --git a/dist/js/dev_dashboard.js b/src/js/dev_dashboard.js similarity index 100% rename from dist/js/dev_dashboard.js rename to src/js/dev_dashboard.js diff --git a/dist/js/discord.js b/src/js/discord.js similarity index 100% rename from dist/js/discord.js rename to src/js/discord.js diff --git a/dist/js/footer.js b/src/js/footer.js similarity index 100% rename from dist/js/footer.js rename to src/js/footer.js diff --git a/dist/js/levenshtein_distance.js b/src/js/levenshtein_distance.js similarity index 100% rename from dist/js/levenshtein_distance.js rename to src/js/levenshtein_distance.js diff --git a/dist/js/navbar.js b/src/js/navbar.js similarity index 100% rename from dist/js/navbar.js rename to src/js/navbar.js diff --git a/dist/js/projects.js b/src/js/projects.js similarity index 100% rename from dist/js/projects.js rename to src/js/projects.js diff --git a/dist/js/ranking_sorter.js b/src/js/ranking_sorter.js similarity index 100% rename from dist/js/ranking_sorter.js rename to src/js/ranking_sorter.js diff --git a/dist/js/sleep.js b/src/js/sleep.js similarity index 100% rename from dist/js/sleep.js rename to src/js/sleep.js diff --git a/dist/privacy.html b/src/privacy.html similarity index 97% rename from dist/privacy.html rename to src/privacy.html index 3803aec4..082522e9 100644 --- a/dist/privacy.html +++ b/src/privacy.html @@ -25,11 +25,13 @@ - + + + - + @@ -133,8 +135,6 @@

Privacy Policy Changes

- - diff --git a/dist/support.html b/src/support.html similarity index 98% rename from dist/support.html rename to src/support.html index ba97b07d..55e40e63 100644 --- a/dist/support.html +++ b/src/support.html @@ -25,13 +25,15 @@ - + - + + + - + @@ -295,8 +297,6 @@

Facebook Group

- - diff --git a/dist/terms.html b/src/terms.html similarity index 97% rename from dist/terms.html rename to src/terms.html index 4b47f8bc..79610abb 100644 --- a/dist/terms.html +++ b/src/terms.html @@ -25,11 +25,13 @@ - + + + - + @@ -172,8 +174,6 @@

Disclaimer

- - diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 00000000..e60df440 --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,32 @@ +const path = require('path'); +const MiniCssExtractPlugin = require('mini-css-extract-plugin'); + +module.exports = { + entry: { + bootstrap: [ + 'bootstrap/dist/js/bootstrap.bundle.min.js', + 'bootstrap/dist/css/bootstrap.min.css' + ], + fontawesome: '@fortawesome/fontawesome-free/css/all.min.css', + jquery: 'script-loader!jquery/dist/jquery.min.js', // this needs script-loader or $ will not be defined globally + popper: '@popperjs/core/dist/umd/popper.min.js', + }, + output: { + filename: 'js/[name].bundle.js', + path: path.resolve(__dirname, 'dist'), + }, + mode: 'production', + module: { + rules: [ + { + test: /\.css$/, + use: [MiniCssExtractPlugin.loader, 'css-loader'], + }, + ], + }, + plugins: [ + new MiniCssExtractPlugin({ + filename: 'css/[name].bundle.css', + }), + ], +};