diff --git a/.gitignore b/.gitignore index 6d4c0aa..0945ee5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +sass/@** + # build output dist/ diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index e69de29..0000000 diff --git a/.justfile b/.justfile index ee0b6e0..a922584 100644 --- a/.justfile +++ b/.justfile @@ -6,3 +6,6 @@ dev: build: @zola build + +link-dependencies: + bun run _scripts/link-dependencies.ts diff --git a/_scripts/link-dependencies.ts b/_scripts/link-dependencies.ts new file mode 100644 index 0000000..f78417a --- /dev/null +++ b/_scripts/link-dependencies.ts @@ -0,0 +1,47 @@ +#!/usr/bin/env bun + +import { fileURLToPath } from 'url'; +import fs from "node:fs/promises"; +import { basename, normalize } from "node:path"; + +function ignore_exist_error(fn: (...args: any[]) => Promise) { + return async (...args: any[]) => { + try { + await fn(...args); + } catch (error: any) { + if (error.code !== 'EEXIST') { + throw error; // Re-throw the error if it's not "file exists" + } + } + } +} + +const mkdir = ignore_exist_error(fs.mkdir); +const symlink = ignore_exist_error(fs.symlink); + + +const def = await Bun.file("package.json").json(); + +const dependencies = Object.keys(def.dependencies); + +for (const pkg of dependencies) { + const path = normalize(fileURLToPath(import.meta.resolve(pkg))); + const file = Bun.file(import.meta.resolve(pkg)); + const type = file.type.split(";").at(0); + const filename = basename(path); + + switch (type) { + case "text/x-scss": + await mkdir(`sass/${pkg}`) + await symlink(path, `sass/${pkg}/${filename}`); + console.log(`${path} -> sass/${pkg}/${filename}`) + break; + case "text/javascript": + // console.log("es JS") + break; + } + +} + +console.log(); +console.log("Dependencies linked!"); diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000..fd62c1f Binary files /dev/null and b/bun.lockb differ diff --git a/bunfig.toml b/bunfig.toml new file mode 100644 index 0000000..e655138 --- /dev/null +++ b/bunfig.toml @@ -0,0 +1,2 @@ +[install.scopes] +mini-strap = "https://git.alecodes.page/api/packages/alecodes/npm/" diff --git a/package.json b/package.json index b13addf..3497cc4 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,14 @@ { "name": "personal-page", - "type": "module", "version": "0.3.0", - "scripts": { }, - "dependencies": { - }, + "module": "index.ts", "devDependencies": { - "typescript": "^5.2.2" + "typescript": "^5.2.2", + "@types/bun": "latest" + }, + "scripts": {}, + "type": "module", + "dependencies": { + "@mini-strap/core": "^0.1.0" } -} +} \ No newline at end of file diff --git a/sass/style.scss b/sass/style.scss new file mode 100644 index 0000000..e903ac2 --- /dev/null +++ b/sass/style.scss @@ -0,0 +1,5 @@ +@import "@mini-strap/core/style.scss"; + +html { + // background-color: red; +} diff --git a/templates/base.html b/templates/base.html index f258847..e6c7a35 100644 --- a/templates/base.html +++ b/templates/base.html @@ -13,6 +13,7 @@ + diff --git a/tsconfig.json b/tsconfig.json index bab51e4..238655f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,20 +1,27 @@ { - "extends": "astro/tsconfigs/strict", "compilerOptions": { + // Enable latest features + "lib": ["ESNext", "DOM"], + "target": "ESNext", + "module": "ESNext", + "moduleDetection": "force", "jsx": "react-jsx", - "jsxImportSource": "react", + "allowJs": true, + + // Bundler mode + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, "verbatimModuleSyntax": true, - "baseUrl": ".", - "paths": { - "@components/*": ["src/components/*"], - "@layouts/*": ["src/layouts/*"], - "@assets/*": ["src/assets/*"], - "@locales/*": ["public/locales/*"] - }, - "plugins": [ - { - "name": "@astrojs/ts-plugin" - } - ] + "noEmit": true, + + // Best practices + "strict": true, + "skipLibCheck": true, + "noFallthroughCasesInSwitch": true, + + // Some stricter flags (disabled by default) + "noUnusedLocals": false, + "noUnusedParameters": false, + "noPropertyAccessFromIndexSignature": false } }