Add monorepo support to project (#682)
* feat: add monorepo support * fix: correct relatedProjects structure in vercel.json * update github actions with monorepo support * removed legacy dep * moved jsr config into web package
@@ -9,4 +9,4 @@ if [ -f "$SIMPLE_GIT_HOOKS_RC" ]; then
|
|||||||
. "$SIMPLE_GIT_HOOKS_RC"
|
. "$SIMPLE_GIT_HOOKS_RC"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
deno task lint:fix && deno task format
|
cd packages/web && deno task lint:fix && deno task format
|
||||||
@@ -35,7 +35,7 @@ jobs:
|
|||||||
${{ runner.os }}-deno-
|
${{ runner.os }}-deno-
|
||||||
|
|
||||||
- name: Cache Dependencies
|
- name: Cache Dependencies
|
||||||
run: deno cache src/index.tsx
|
run: deno cache /packages/web/src/index.tsx
|
||||||
|
|
||||||
- name: Run linter
|
- name: Run linter
|
||||||
run: deno task lint
|
run: deno task lint
|
||||||
|
|||||||
@@ -21,22 +21,26 @@ jobs:
|
|||||||
deno-version: v2.x
|
deno-version: v2.x
|
||||||
|
|
||||||
- name: Install Dependencies
|
- name: Install Dependencies
|
||||||
|
working-directory: packages/web
|
||||||
run: deno install
|
run: deno install
|
||||||
|
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
|
working-directory: packages/web
|
||||||
run: deno task test
|
run: deno task test
|
||||||
|
|
||||||
- name: Build Package
|
- name: Build Package
|
||||||
|
working-directory: packages/web
|
||||||
run: deno task build
|
run: deno task build
|
||||||
|
|
||||||
- name: Package Output
|
- name: Package Output
|
||||||
|
working-directory: packages/web
|
||||||
run: deno task package
|
run: deno task package
|
||||||
|
|
||||||
- name: Archive compressed build
|
- name: Archive compressed build
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: build
|
name: build
|
||||||
path: dist/build.tar
|
path: packages/web/dist/build.tar
|
||||||
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v3
|
uses: docker/setup-qemu-action@v3
|
||||||
|
|||||||
@@ -1,10 +1,16 @@
|
|||||||
name: Pull Request CI
|
name: Push to Main CI
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
packages: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build-and-package:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
@@ -15,54 +21,37 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
deno-version: v2.x
|
deno-version: v2.x
|
||||||
|
|
||||||
|
- name: Install Dependencies
|
||||||
|
# Commands will run from 'packages/web'
|
||||||
|
working-directory: packages/web
|
||||||
|
run: deno install
|
||||||
|
|
||||||
- name: Cache Deno dependencies
|
- name: Cache Deno dependencies
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: |
|
path: |
|
||||||
~/.cache/deno
|
~/.cache/deno
|
||||||
./deno.lock
|
packages/web/deno.lock
|
||||||
key: ${{ runner.os }}-deno-${{ hashFiles('**/deno.lock') }}
|
key: ${{ runner.os }}-deno-${{ hashFiles('packages/web/deno.lock') }}
|
||||||
restore-keys: |
|
restore-keys: |
|
||||||
${{ runner.os }}-deno-
|
${{ runner.os }}-deno-
|
||||||
|
|
||||||
- name: Install Dependencies
|
|
||||||
run: deno install
|
|
||||||
|
|
||||||
- name: Cache Dependencies
|
- name: Cache Dependencies
|
||||||
run: deno cache src/index.tsx
|
working-directory: packages/web
|
||||||
|
run: deno cache src/index.tsx
|
||||||
|
|
||||||
- name: Get changed files
|
- name: Run linter
|
||||||
id: changed-files
|
working-directory: packages/web
|
||||||
uses: tj-actions/changed-files@v46
|
run: deno task lint
|
||||||
with:
|
|
||||||
files: |
|
|
||||||
**/*.ts
|
|
||||||
**/*.tsx
|
|
||||||
|
|
||||||
# Uncomment the following lines when you have figured out how to ignore files
|
- name: Check formatter
|
||||||
# - name: Type check changed files
|
working-directory: packages/web
|
||||||
# if: steps.changed-files.outputs.all_changed_files != ''
|
run: deno task format --check
|
||||||
# run: deno check ${{ steps.changed-files.outputs.all_changed_files }}
|
|
||||||
|
|
||||||
- name: Run linter on changed files
|
|
||||||
if: steps.changed-files.outputs.all_changed_files != ''
|
|
||||||
run: deno task lint ${{ steps.changed-files.outputs.all_changed_files }}
|
|
||||||
|
|
||||||
- name: Check format on changed files
|
|
||||||
if: steps.changed-files.outputs.all_changed_files != ''
|
|
||||||
run: deno task format --check ${{ steps.changed-files.outputs.all_changed_files }}
|
|
||||||
|
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
|
working-directory: packages/web
|
||||||
run: deno task test
|
run: deno task test
|
||||||
|
|
||||||
- name: Build Package
|
- name: Build Package
|
||||||
run: deno task build
|
working-directory: packages/web
|
||||||
|
run: deno task build
|
||||||
- name: Compress build
|
|
||||||
run: deno task package
|
|
||||||
|
|
||||||
- name: Archive compressed build
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: build
|
|
||||||
path: dist/build.tar
|
|
||||||
@@ -21,26 +21,30 @@ jobs:
|
|||||||
deno-version: v2.x
|
deno-version: v2.x
|
||||||
|
|
||||||
- name: Install Dependencies
|
- name: Install Dependencies
|
||||||
|
working-directory: packages/web
|
||||||
run: deno install
|
run: deno install
|
||||||
|
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
|
working-directory: packages/web
|
||||||
run: deno task test
|
run: deno task test
|
||||||
|
|
||||||
- name: Build Package
|
- name: Build Package
|
||||||
|
working-directory: packages/web
|
||||||
run: deno task build
|
run: deno task build
|
||||||
|
|
||||||
- name: Package Output
|
- name: Package Output
|
||||||
|
working-directory: packages/web
|
||||||
run: deno task package
|
run: deno task package
|
||||||
|
|
||||||
- name: Archive compressed build
|
- name: Archive compressed build
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: build
|
name: build
|
||||||
path: dist/build.tar
|
path: packages/web/dist/build.tar
|
||||||
|
|
||||||
- name: Attach build.tar to release
|
- name: Attach build.tar to release
|
||||||
run: |
|
run: |
|
||||||
gh release upload ${{ github.event.release.tag_name }} dist/build.tar
|
gh release upload ${{ github.event.release.tag_name }} packages/web/dist/build.tar
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
|||||||
@@ -1,59 +1,24 @@
|
|||||||
{
|
{
|
||||||
"imports": {
|
"workspace": [
|
||||||
"@app/": "./src/",
|
"./packages/web"
|
||||||
"@pages/": "./src/pages/",
|
],
|
||||||
"@components/": "./src/components/",
|
"imports": {},
|
||||||
"@core/": "./src/core/",
|
"nodeModulesDir": "auto",
|
||||||
"@layouts/": "./src/layouts/",
|
|
||||||
"@std/path": "jsr:@std/path@^1.1.0"
|
|
||||||
},
|
|
||||||
"include": ["src", "./vite-env.d.ts"],
|
|
||||||
"compilerOptions": {
|
|
||||||
"lib": [
|
|
||||||
"DOM",
|
|
||||||
"DOM.Iterable",
|
|
||||||
"ESNext",
|
|
||||||
"deno.window",
|
|
||||||
"deno.ns"
|
|
||||||
],
|
|
||||||
"jsx": "react-jsx",
|
|
||||||
"strict": true,
|
|
||||||
"noUnusedLocals": true,
|
|
||||||
"noUnusedParameters": true,
|
|
||||||
"noFallthroughCasesInSwitch": true,
|
|
||||||
"strictNullChecks": true,
|
|
||||||
"types": [
|
|
||||||
"vite/client",
|
|
||||||
"node",
|
|
||||||
"npm:@types/w3c-web-serial",
|
|
||||||
"npm:@types/web-bluetooth"
|
|
||||||
],
|
|
||||||
"strictPropertyInitialization": false
|
|
||||||
},
|
|
||||||
"fmt": {
|
|
||||||
"exclude": [
|
|
||||||
"src/routeTree.gen.ts",
|
|
||||||
"*.test.ts",
|
|
||||||
"*.test.tsx"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"lint": {
|
"lint": {
|
||||||
"exclude": [
|
"exclude": [
|
||||||
"src/routeTree.gen.ts",
|
"*routeTree.gen.ts",
|
||||||
"*.test.ts",
|
"*.test.ts",
|
||||||
"*.test.tsx"
|
"*.test.tsx"
|
||||||
],
|
],
|
||||||
"report": "pretty"
|
"report": "pretty"
|
||||||
},
|
},
|
||||||
"exclude": [
|
"fmt": {
|
||||||
"routeTree.gen.ts",
|
"exclude": [
|
||||||
"node_modules/",
|
"*routeTree.gen.ts",
|
||||||
"dist",
|
"*.test.ts",
|
||||||
"build",
|
"*.test.tsx"
|
||||||
"coverage",
|
]
|
||||||
"out",
|
},
|
||||||
".vscode-test"
|
|
||||||
],
|
|
||||||
"unstable": [
|
"unstable": [
|
||||||
"sloppy-imports"
|
"sloppy-imports"
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
{
|
||||||
|
"imports": {
|
||||||
|
"@app/": "./src/",
|
||||||
|
"@public/": "./public/",
|
||||||
|
"@pages/": "./src/pages/",
|
||||||
|
"@components/": "./src/components/",
|
||||||
|
"@core/": "./src/core/",
|
||||||
|
"@layouts/": "./src/layouts/",
|
||||||
|
"@std/path": "jsr:@std/path@^1.1.0"
|
||||||
|
},
|
||||||
|
"include": ["src", "./vite-env.d.ts"],
|
||||||
|
"compilerOptions": {
|
||||||
|
"lib": [
|
||||||
|
"DOM",
|
||||||
|
"DOM.Iterable",
|
||||||
|
"ESNext",
|
||||||
|
"deno.window",
|
||||||
|
"deno.ns"
|
||||||
|
],
|
||||||
|
"jsx": "react-jsx",
|
||||||
|
"strict": true,
|
||||||
|
"noUnusedLocals": true,
|
||||||
|
"noUnusedParameters": true,
|
||||||
|
"noFallthroughCasesInSwitch": true,
|
||||||
|
"strictNullChecks": true,
|
||||||
|
"types": [
|
||||||
|
"vite/client",
|
||||||
|
"node",
|
||||||
|
"npm:@types/w3c-web-serial",
|
||||||
|
"npm:@types/web-bluetooth"
|
||||||
|
],
|
||||||
|
"strictPropertyInitialization": false
|
||||||
|
},
|
||||||
|
|
||||||
|
"exclude": [
|
||||||
|
"routeTree.gen.ts",
|
||||||
|
"node_modules/",
|
||||||
|
"dist",
|
||||||
|
"build",
|
||||||
|
"coverage",
|
||||||
|
"out",
|
||||||
|
".vscode-test"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "meshtastic-web",
|
"name": "meshtastic-web",
|
||||||
"version": "2.6.0-0",
|
"version": "2.7.0-0",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "Meshtastic web client",
|
"description": "Meshtastic web client",
|
||||||
"license": "GPL-3.0-only",
|
"license": "GPL-3.0-only",
|
||||||
@@ -15,7 +15,8 @@
|
|||||||
"test": "deno run -A npm:vitest",
|
"test": "deno run -A npm:vitest",
|
||||||
"check": "deno check",
|
"check": "deno check",
|
||||||
"preview": "deno run -A npm:vite preview",
|
"preview": "deno run -A npm:vite preview",
|
||||||
"package": "gzipper c -i html,js,css,png,ico,svg,webmanifest,txt dist dist/output && tar -cvf dist/build.tar -C ./dist/output/ ."
|
"generate:routes": "deno run -A npm:@tanstack/router-cli generate --outDir src/ routes --rootRoutePath /",
|
||||||
|
"package": "gzipper c -i html,js,css,png,ico,svg,json,webmanifest,txt dist dist/output && tar -cvf dist/build.tar -C ./dist/output/ ."
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@@ -27,12 +28,6 @@
|
|||||||
"simple-git-hooks": {
|
"simple-git-hooks": {
|
||||||
"pre-commit": "deno task lint:fix && deno task format"
|
"pre-commit": "deno task lint:fix && deno task format"
|
||||||
},
|
},
|
||||||
"lint-staged": {
|
|
||||||
"*.{ts,tsx}": [
|
|
||||||
"deno task lint:fix",
|
|
||||||
"deno task format"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"homepage": "https://meshtastic.org",
|
"homepage": "https://meshtastic.org",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@bufbuild/protobuf": "^2.2.5",
|
"@bufbuild/protobuf": "^2.2.5",
|
||||||
@@ -61,8 +56,10 @@
|
|||||||
"@radix-ui/react-tooltip": "^1.2.4",
|
"@radix-ui/react-tooltip": "^1.2.4",
|
||||||
"@tanstack/react-router": "^1.120.15",
|
"@tanstack/react-router": "^1.120.15",
|
||||||
"@tanstack/react-router-devtools": "^1.120.16",
|
"@tanstack/react-router-devtools": "^1.120.16",
|
||||||
|
"@tanstack/router-cli": "^1.121.37",
|
||||||
"@tanstack/router-devtools": "^1.120.15",
|
"@tanstack/router-devtools": "^1.120.15",
|
||||||
"@turf/turf": "^7.2.0",
|
"@turf/turf": "^7.2.0",
|
||||||
|
"@types/node": "^24.0.4",
|
||||||
"@types/web-bluetooth": "^0.0.21",
|
"@types/web-bluetooth": "^0.0.21",
|
||||||
"base64-js": "^1.5.1",
|
"base64-js": "^1.5.1",
|
||||||
"class-variance-authority": "^0.7.1",
|
"class-variance-authority": "^0.7.1",
|
||||||
@@ -95,7 +92,6 @@
|
|||||||
"@testing-library/react": "^16.3.0",
|
"@testing-library/react": "^16.3.0",
|
||||||
"@testing-library/user-event": "^14.6.1",
|
"@testing-library/user-event": "^14.6.1",
|
||||||
"@types/chrome": "^0.0.318",
|
"@types/chrome": "^0.0.318",
|
||||||
"@types/node": "^22.15.3",
|
|
||||||
"@types/react": "^19.1.2",
|
"@types/react": "^19.1.2",
|
||||||
"@types/react-dom": "^19.1.3",
|
"@types/react-dom": "^19.1.3",
|
||||||
"@types/serviceworker": "^0.0.133",
|
"@types/serviceworker": "^0.0.133",
|
||||||
@@ -113,8 +109,7 @@
|
|||||||
"tar": "^7.4.3",
|
"tar": "^7.4.3",
|
||||||
"testing-library": "^0.0.2",
|
"testing-library": "^0.0.2",
|
||||||
"typescript": "^5.8.3",
|
"typescript": "^5.8.3",
|
||||||
"vite": "^6.3.4",
|
"vite": "^7.0.0",
|
||||||
"vite-plugin-pwa": "^1.0.0",
|
"vitest": "^3.2.4"
|
||||||
"vitest": "^3.1.2"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 89 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 8.8 KiB After Width: | Height: | Size: 8.8 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 9.9 KiB |
|
Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 9.9 KiB |
|
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 83 KiB |
|
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 83 KiB |
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 43 KiB |