chore: fix sass dependencies management
This commit is contained in:
parent
d24fa9dc45
commit
8712d7aa0d
7 changed files with 81 additions and 22 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -1,3 +1,5 @@
|
||||||
|
sass/@**
|
||||||
|
|
||||||
# build output
|
# build output
|
||||||
dist/
|
dist/
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,3 +6,6 @@ dev:
|
||||||
|
|
||||||
build:
|
build:
|
||||||
@zola build
|
@zola build
|
||||||
|
|
||||||
|
link-dependencies:
|
||||||
|
bun run _scripts/link-dependencies.ts
|
||||||
|
|
|
||||||
47
_scripts/link-dependencies.ts
Normal file
47
_scripts/link-dependencies.ts
Normal file
|
|
@ -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<void>) {
|
||||||
|
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!");
|
||||||
BIN
bun.lockb
BIN
bun.lockb
Binary file not shown.
12
package.json
12
package.json
|
|
@ -1,14 +1,14 @@
|
||||||
{
|
{
|
||||||
"name": "personal-page",
|
"name": "personal-page",
|
||||||
"type": "module",
|
|
||||||
"version": "0.3.0",
|
"version": "0.3.0",
|
||||||
"scripts": {},
|
"module": "index.ts",
|
||||||
"dependencies": {
|
|
||||||
"@mini-strap/core": "0.1.0"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"typescript": "^5.2.2",
|
"typescript": "^5.2.2",
|
||||||
"@types/bun": "latest"
|
"@types/bun": "latest"
|
||||||
},
|
},
|
||||||
"module": "index.ts"
|
"scripts": {},
|
||||||
|
"type": "module",
|
||||||
|
"dependencies": {
|
||||||
|
"@mini-strap/core": "^0.1.0"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
@import "../node_modules/@mini-strap/core/src/style.scss";
|
@import "@mini-strap/core/style.scss";
|
||||||
|
|
||||||
html {
|
html {
|
||||||
// background-color: red;
|
// background-color: red;
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,27 @@
|
||||||
{
|
{
|
||||||
"extends": "astro/tsconfigs/strict",
|
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
|
// Enable latest features
|
||||||
|
"lib": ["ESNext", "DOM"],
|
||||||
|
"target": "ESNext",
|
||||||
|
"module": "ESNext",
|
||||||
|
"moduleDetection": "force",
|
||||||
"jsx": "react-jsx",
|
"jsx": "react-jsx",
|
||||||
"jsxImportSource": "react",
|
"allowJs": true,
|
||||||
|
|
||||||
|
// Bundler mode
|
||||||
|
"moduleResolution": "bundler",
|
||||||
|
"allowImportingTsExtensions": true,
|
||||||
"verbatimModuleSyntax": true,
|
"verbatimModuleSyntax": true,
|
||||||
"baseUrl": ".",
|
"noEmit": true,
|
||||||
"paths": {
|
|
||||||
"@components/*": ["src/components/*"],
|
// Best practices
|
||||||
"@layouts/*": ["src/layouts/*"],
|
"strict": true,
|
||||||
"@assets/*": ["src/assets/*"],
|
"skipLibCheck": true,
|
||||||
"@locales/*": ["public/locales/*"]
|
"noFallthroughCasesInSwitch": true,
|
||||||
},
|
|
||||||
"plugins": [
|
// Some stricter flags (disabled by default)
|
||||||
{
|
"noUnusedLocals": false,
|
||||||
"name": "@astrojs/ts-plugin"
|
"noUnusedParameters": false,
|
||||||
}
|
"noPropertyAccessFromIndexSignature": false
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue