From 6b7642b6931df861f9f997221ffcfcb4e7975195 Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 19 Feb 2025 10:44:02 -0300 Subject: [PATCH] feat: add frontend compilation task with bun --- .gitignore | 133 ++++++++++++++++++++++++++++++++++++++++++++ .justfile | 17 ++++++ bun.lockb | Bin 0 -> 15821 bytes bunfig.toml | 7 +++ package.json | 16 ++++++ templates/base.html | 1 + 6 files changed, 174 insertions(+) create mode 100755 bun.lockb create mode 100644 bunfig.toml create mode 100644 package.json diff --git a/.gitignore b/.gitignore index d44f2b5..3399b78 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,139 @@ #### -- TEMPLATES BEGIN -- #### +### Node + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional stylelint cache +.stylelintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# vuepress v2.x temp and cache directory +.temp +.cache + +# Docusaurus cache and generated files +.docusaurus + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + #### -- TEMPLATES END -- #### # Allow to presever folder structure in excluded folers, should be the last rule diff --git a/.justfile b/.justfile index 94285c5..2f101d1 100644 --- a/.justfile +++ b/.justfile @@ -15,3 +15,20 @@ dev: migrate: (docker-compose "run dbmate migrate") rollback: (docker-compose "run dbmate rollback") + +build-frontend: + #!/usr/bin/env bun + import sassPlugin from "@alecodes/bun-plugin-sass"; + + const result = await Bun.build({ + entrypoints: ["templates/base.html"], + outdir: "dist", + naming: { + entry: "[dir]/[name].[ext]", + chunk: "chunks/[name]-[hash].[ext]", + asset: "assets/[name]-[hash].[ext]", + }, + plugins: [sassPlugin], + }); + + console.log("Assets compiled!"); diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..42c31942778a3ad1ee2c28ffb30e68db83b49b58 GIT binary patch literal 15821 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 literal 0 HcmV?d00001 diff --git a/bunfig.toml b/bunfig.toml new file mode 100644 index 0000000..f694d83 --- /dev/null +++ b/bunfig.toml @@ -0,0 +1,7 @@ +[serve.static] +plugins = ["bun-plugin-sass"] + +[install.scopes] + +"@alecodes" = { token = "$NPM_REGISTRY_TOKEN", url = "https://git.alecodes.page/api/packages/alecodes/npm/" } +"@mini-strap" = { token = "$NPM_REGISTRY_TOKEN", url = "https://git.alecodes.page/api/packages/alecodes/npm/" } diff --git a/package.json b/package.json new file mode 100644 index 0000000..b44f660 --- /dev/null +++ b/package.json @@ -0,0 +1,16 @@ +{ + "name": "compendium", + "module": "index.ts", + "devDependencies": { + "@alecodes/bun-plugin-sass": "^0.1.2", + "@alecodes/bun-static-builder": "^0.1.0", + "@types/bun": "latest" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "type": "module", + "dependencies": { + "@mini-strap/core": "^0.1.2" + } +} \ No newline at end of file diff --git a/templates/base.html b/templates/base.html index 0ed1c3f..cbc5676 100644 --- a/templates/base.html +++ b/templates/base.html @@ -2,6 +2,7 @@ + {% block title %}Axum web service!{% endblock %}