chore: add a devcontainer setup #50

Merged
Philipp merged 3 commits from add-devcontainer into main 2025-12-27 01:02:37 +01:00
3 changed files with 96 additions and 57 deletions

View File

@@ -0,0 +1,37 @@
{
"name": "JS Dev Container",
"image": "mcr.microsoft.com/devcontainers/javascript-node:1-20",
"features": {
"ghcr.io/devcontainers/features/git:1": {},
"ghcr.io/devcontainers/features/git-lfs:1": {},
"ghcr.io/devcontainers-extra/features/pre-commit:2": {},
"ghcr.io/devcontainers-extra/features/npm-packages:1": {
"packages": "@google/gemini-cli"
}
},
"customizations": {
"vscode": {
"extensions": [
"ms-python.python",
"esbenp.prettier-vscode",
"vitest.explorer",
"google.gemini-cli-vscode-ide-companion",
"google.geminicodeassist"
],
"settings": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
}
},
"postStartCommand": "bash .devcontainer/setup.sh",
"remoteUser": "node",
"updateRemoteUserUID": true,
"mounts": [
"source=pipx-venvs,target=/home/node/.local/share/pipx,type=volume",
"source=pipx-bin,target=/home/node/.local/bin,type=volume",
"source=pre-commit-cache,target=/home/node/.cache/pre-commit,type=volume",
"source=${localEnv:USERPROFILE}/.gemini,target=/home/node/.gemini,type=bind",
"source=gvscode-extensions,target=/home/node/.cache/google-vscode-extension,type=volume"
]
}

11
.devcontainer/setup.sh Normal file
View File

@@ -0,0 +1,11 @@
#!/bin/bash
# 1. Fix Git Permissions (Critical in Docker)
git config --global --add safe.directory $(pwd)
# In your setup.sh or postCreateCommand
sudo chown -R node:node /home/node/.cache/
# 2. Re-connect Git Hooks
pre-commit install
pre-commit install-hooks

View File

@@ -1,57 +1,48 @@
exclude: ^node_modules/
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v6.0.0
hooks:
- id: end-of-file-fixer
exclude: (.txt$|.ipynb$|README.md$|readme.mde$)
- id: trailing-whitespace
exclude: (.txt$|README.md$)
- id: check-yaml
- id: check-json
- id: check-toml
- id: check-xml
- id: check-added-large-files
args: [--enforce-all]
- id: name-tests-test
- id: detect-private-key
- id: check-case-conflict
- id: check-symlinks
- id: check-docstring-first
- id: pretty-format-json
args: [--autofix, --no-sort-keys, --no-ensure-ascii]
- id: check-merge-conflict
- id: no-commit-to-branch
args: [--branch, main]
- repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks
rev: v2.15.0
hooks:
- id: pretty-format-ini
args: [--autofix]
- id: pretty-format-toml
args: [--autofix]
- id: pretty-format-yaml
args: [--autofix]
- repo: https://github.com/frnmst/md-toc
rev: 9.0.0
hooks:
- id: md-toc
- repo: https://github.com/Lucas-C/pre-commit-hooks-java
rev: 1.3.10
hooks:
- id: validate-html
- repo: https://github.com/pre-commit/mirrors-prettier
rev: v4.0.0-alpha.8
hooks:
- id: prettier
types_or: [css, javascript]
- repo: https://github.com/python-jsonschema/check-jsonschema
rev: 0.36.0
hooks:
- id: check-renovate
- id: check-github-actions
exclude: ^node_modules/
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v6.0.0
hooks:
- id: end-of-file-fixer
exclude: (.txt$|.ipynb$|README.md$|readme.mde$)
- id: trailing-whitespace
exclude: (.txt$|README.md$)
- id: check-yaml
- id: check-json
- id: check-toml
- id: check-xml
- id: check-added-large-files
args: [--enforce-all]
- id: name-tests-test
- id: detect-private-key
- id: check-case-conflict
- id: check-symlinks
- id: check-docstring-first
- id: pretty-format-json
args: [--autofix, --no-sort-keys, --no-ensure-ascii]
- id: check-merge-conflict
- id: no-commit-to-branch
args: [--branch, main]
- repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks
rev: v2.15.0
hooks:
- id: pretty-format-ini
args: [--autofix]
- id: pretty-format-toml
args: [--autofix]
- id: pretty-format-yaml
args: [--autofix]
- repo: https://github.com/pre-commit/mirrors-prettier
rev: v4.0.0-alpha.8
hooks:
- id: prettier
types_or: [css, javascript]
- repo: https://github.com/python-jsonschema/check-jsonschema
rev: 0.36.0
hooks:
- id: check-renovate
- id: check-github-actions
- id: check-github-workflows