From aaa394fcd846b680a50b6d2d0930c9099e313261 Mon Sep 17 00:00:00 2001 From: Prozilla Date: Sat, 6 Jul 2024 20:44:05 +0200 Subject: [PATCH] Fixed scripts to work with packages --- README.md | 2 +- package.json | 10 +++--- pnpm-lock.yaml | 63 ++++++++++++++++++++++---------------- scripts/deploy.ts | 2 +- scripts/fetchRepository.ts | 6 ++-- scripts/stage.ts | 20 ++++++------ tsconfig.json | 11 ++----- vite.config.ts | 2 +- 8 files changed, 61 insertions(+), 55 deletions(-) diff --git a/README.md b/README.md index 78b0f04..ba7381e 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,7 @@ These scripts are related to the website and its lifecycle. Compile project using TypeScript and bundle all files into the `dist` directory, or the directory specified in config file. This directory can be uploaded to a web server. -3. `pnpm run serve` +3. `pnpm run preview` Start web server with preview of build at [localhost:8080](http://localhost:8080/). Can be useful for testing build before deploying. diff --git a/package.json b/package.json index a2f0cba..80e0368 100644 --- a/package.json +++ b/package.json @@ -12,11 +12,11 @@ "preinstall": "npx only-allow pnpm", "start": "vite", "build": "tsc && vite build", - "serve": "vite preview --port 8080", - "stage": "tsx scripts/stage", + "preview": "vite preview --port 8080", + "stage": "vite-node scripts/stage", "predeploy": "pnpm run build && pnpm run stage", - "deploy": "tsx scripts/deploy", - "fetch": "tsx scripts/fetchRepository", + "deploy": "vite-node scripts/deploy", + "fetch": "vite-node scripts/fetchRepository", "packages:build": "pnpm -r --sequential run build", "packages:update": "npx changeset && pnpm changeset version", "packages:release": "pnpm changeset publish" @@ -58,9 +58,9 @@ "eslint-plugin-react-refresh": "^0.4.7", "gh-pages": "^6.1.1", "stylelint": "^16.6.1", - "tsx": "^4.15.6", "typescript": "^5.4.5", "typescript-eslint": "^7.13.1", + "vite-node": "^1.6.0", "vite-plugin-checker": "^0.7.1" }, "browserslist": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8049e6e..7caf3e8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -87,15 +87,15 @@ importers: stylelint: specifier: ^16.6.1 version: 16.6.1(typescript@5.4.5) - tsx: - specifier: ^4.15.6 - version: 4.15.6 typescript: specifier: ^5.4.5 version: 5.4.5 typescript-eslint: specifier: ^7.13.1 version: 7.13.1(eslint@8.57.0)(typescript@5.4.5) + vite-node: + specifier: ^1.6.0 + version: 1.6.0(@types/node@20.14.6)(less@4.2.0) vite-plugin-checker: specifier: ^0.7.1 version: 0.7.1(eslint@8.57.0)(optionator@0.9.4)(stylelint@16.6.1(typescript@5.4.5))(typescript@5.4.5)(vite@5.3.1(@types/node@20.14.6)(less@4.2.0)) @@ -1597,6 +1597,10 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + call-bind@1.0.7: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} @@ -2096,9 +2100,6 @@ packages: resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} - get-tsconfig@4.7.5: - resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} - gh-pages@6.1.1: resolution: {integrity: sha512-upnohfjBwN5hBP9w2dPE7HO5JJTHzSGMV1JrLrHvNuqmjoYHg6TBrCcnEoorjG/e0ejbuvnwyKMdTyM40PEByw==} engines: {node: '>=10'} @@ -2762,6 +2763,9 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + picocolors@1.0.1: resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} @@ -2969,9 +2973,6 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - resolve@1.19.0: resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} @@ -3242,11 +3243,6 @@ packages: tslib@2.6.3: resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} - tsx@4.15.6: - resolution: {integrity: sha512-is0VQQlfNZRHEuSSTKA6m4xw74IU4AizmuB6lAYLRt9XtuyeQnyJYexhNZOPCB59SqC4JzmSzPnHGBXxf3k0hA==} - engines: {node: '>=18.0.0'} - hasBin: true - tty-table@4.2.3: resolution: {integrity: sha512-Fs15mu0vGzCrj8fmJNP7Ynxt5J7praPXqFN0leZeZBXJwkMxv9cb2D454k1ltrtUSJbZ4yH4e0CynsHLxmUfFA==} engines: {node: '>=8.0.0'} @@ -3345,6 +3341,11 @@ packages: resolution: {integrity: sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==} engines: {node: '>= 0.10'} + vite-node@1.6.0: + resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + vite-plugin-checker@0.7.1: resolution: {integrity: sha512-Yby+Dr6+cJlkoPagqdQQn21+ZPaYwonNSlW3VpZzoyDAxoYt7YUDhzSYrCa15iTe+X4IpiNC882a3oomxCXyTA==} engines: {node: '>=14.16'} @@ -4720,6 +4721,8 @@ snapshots: node-releases: 2.0.14 update-browserslist-db: 1.0.16(browserslist@4.23.1) + cac@6.7.14: {} + call-bind@1.0.7: dependencies: es-define-property: 1.0.0 @@ -5345,10 +5348,6 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.2.4 - get-tsconfig@4.7.5: - dependencies: - resolve-pkg-maps: 1.0.0 - gh-pages@6.1.1: dependencies: async: 3.2.5 @@ -5999,6 +5998,8 @@ snapshots: path-type@4.0.0: {} + pathe@1.1.2: {} + picocolors@1.0.1: {} picomatch@2.3.1: {} @@ -6202,8 +6203,6 @@ snapshots: resolve-from@5.0.0: {} - resolve-pkg-maps@1.0.0: {} - resolve@1.19.0: dependencies: is-core-module: 2.13.1 @@ -6545,13 +6544,6 @@ snapshots: tslib@2.6.3: {} - tsx@4.15.6: - dependencies: - esbuild: 0.21.5 - get-tsconfig: 4.7.5 - optionalDependencies: - fsevents: 2.3.3 - tty-table@4.2.3: dependencies: chalk: 4.1.2 @@ -6655,6 +6647,23 @@ snapshots: validator@13.12.0: {} + vite-node@1.6.0(@types/node@20.14.6)(less@4.2.0): + dependencies: + cac: 6.7.14 + debug: 4.3.5 + pathe: 1.1.2 + picocolors: 1.0.1 + vite: 5.3.1(@types/node@20.14.6)(less@4.2.0) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + vite-plugin-checker@0.7.1(eslint@8.57.0)(optionator@0.9.4)(stylelint@16.6.1(typescript@5.4.5))(typescript@5.4.5)(vite@5.3.1(@types/node@20.14.6)(less@4.2.0)): dependencies: '@babel/code-frame': 7.24.7 diff --git a/scripts/deploy.ts b/scripts/deploy.ts index 819b54f..c07ac1c 100644 --- a/scripts/deploy.ts +++ b/scripts/deploy.ts @@ -1,5 +1,5 @@ import ghpages from "gh-pages"; -import { ANSI } from "../src/config/apps/terminal.config"; +import { ANSI } from "../packages/core/src/constants"; import { BASE_URL, BUILD_DIR, COMMIT_MESSAGE, DOMAIN, REPO_URL } from "../src/config/deploy.config"; function deploy() { diff --git a/scripts/fetchRepository.ts b/scripts/fetchRepository.ts index b77e483..5888cfd 100644 --- a/scripts/fetchRepository.ts +++ b/scripts/fetchRepository.ts @@ -1,9 +1,10 @@ import fs from "node:fs"; import { REPO } from "../src/config/deploy.config"; -import { ANSI } from "@prozilla-os/core"; +import { ANSI } from "../packages/core/src/constants"; const API_URL = "https://api.github.com/"; -const TREE_PATH = "public/config/tree.json"; +const TREE_DIRECTORY = "public/config"; +const TREE_PATH = `${TREE_DIRECTORY}/tree.json`; interface ReponseType { sha: string; @@ -52,6 +53,7 @@ function fetchRepositoryTree(callback: (tree: string) => void) { try { fetchRepositoryTree((tree) => { + fs.mkdirSync(TREE_DIRECTORY, { recursive: true }); fs.writeFileSync(TREE_PATH, tree, { flag: "w+" }); console.log(`\n${ANSI.fg.green}✓ Generated repository tree: ${ANSI.fg.cyan + TREE_PATH + ANSI.reset}`); }); diff --git a/scripts/stage.ts b/scripts/stage.ts index 42cd99f..43e9d4a 100644 --- a/scripts/stage.ts +++ b/scripts/stage.ts @@ -1,9 +1,9 @@ import fs from "node:fs"; -import { APP_DESCRIPTIONS, APP_NAMES, AppKey, APPS } from "../src/config/apps.config"; -import { ANSI } from "../src/config/apps/terminal.config"; +import { appsConfig } from "../src/config/apps.config"; +import { ANSI } from "../packages/core/src/constants"; import { NAME, TAG_LINE } from "../src/config/branding.config"; -import { WALLPAPERS } from "../src/config/desktop.config"; import { BASE_URL, BUILD_DIR, DOMAIN } from "../src/config/deploy.config"; +import { desktopConfig } from "../src/config/desktop.config"; const PATHS = { sitemapXml: BUILD_DIR + "/sitemap.xml", @@ -16,15 +16,15 @@ function generateSitemapXml() { const date = new Date(); const lastModified = `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`; - const images = WALLPAPERS.map((path) => ` + const images = desktopConfig.wallpapers.map((path) => ` ${BASE_URL.slice(0, -1) + path} ` ); - const pages = Object.values(APPS).map((appId) => ` + const pages = appsConfig.apps.map(({ id }) => ` - ${BASE_URL + appId} + ${BASE_URL + id} ${lastModified} ` ); @@ -89,10 +89,10 @@ function generate404Page(template: string) { * Add an HTML file for every app page so they can be properly crawled and indexed */ function generateAppPages(template: string) { - for (const [key, value] of Object.entries(APPS)) { - const appId = value; - const appName = key in APP_NAMES ? APP_NAMES[key as AppKey] as string : appId; - const appDescription = Object.keys(APP_DESCRIPTIONS).includes(key) ? APP_DESCRIPTIONS[key as AppKey] as string : TAG_LINE; + for (const app of appsConfig.apps) { + const appId = app.id; + const appName = app.name; + const appDescription = app.description ?? TAG_LINE; if (appId === "index") { console.log("Invalid app ID found: " + appId); diff --git a/tsconfig.json b/tsconfig.json index a5daf5c..9a086cf 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -37,17 +37,12 @@ "src/**/*", "vite.config.ts", "*.vite.config.ts", - // "scripts/**/*", // TO DO: uncomment this line + "scripts/**/*", ], "exclude": [ - "**/node_modules", - "**/dist", + "**/node_modules/**/*", + "**/dist/**/*", "./.vscode", "./.github", ], - "ts-node": { - "experimentalSpecifierResolution": "node", - "transpileOnly": true, - "esm": true, - } } \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts index 0daf542..494262b 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -14,7 +14,7 @@ const ENABLE_ALIASES = true; * Enables importing local packages from their dist (build) directory instead of their src directory * Useful for testing builds before publishing */ -const USE_PACKAGE_BUILDS = false; +const USE_PACKAGE_BUILDS = true; function generateAliases() { if (!ENABLE_ALIASES) return {};