diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 4bba1bc..bbbac03 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -9,10 +9,12 @@ ARG GIT_DELTA_VERSION=0.18.2 ARG ZSH_IN_DOCKER_VERSION=1.2.1 ARG PNPM_HOME="/home/usr_vscode/.local/share/pnpm" ARG PATH="$PNPM_HOME:$PATH" +ARG TZ=Asia/Shanghai # 环境变量 ENV LANG=zh_CN.UTF-8 \ LC_ALL=zh_CN.UTF-8 \ + TZ=${TZ} \ # Set `DEVCONTAINER` environment variable to help with orientation DEVCONTAINER=true \ # Set the default shell to zsh rather than sh @@ -73,14 +75,21 @@ USER usr_vscode # Default powerline10k theme RUN touch /home/usr_vscode/.zshrc \ && sh -c "$(curl -L -o - https://github.com/deluan/zsh-in-docker/releases/download/v${ZSH_IN_DOCKER_VERSION}/zsh-in-docker.sh)" -- \ - -p git \ - -p fzf \ - -a "source <(fzf --zsh)" \ - -a "export PROMPT_COMMAND='history -a' && export HISTFILE=/commandhistory/.bash_history" \ - -x \ + -p git \ + -p fzf \ + -a "source <(fzf --zsh)" \ + -a "export PROMPT_COMMAND='history -a' && export HISTFILE=/commandhistory/.bash_history" \ + -x \ + # -a "source /usr/share/doc/fzf/examples/key-bindings.zsh" \ + # -a "source /usr/share/doc/fzf/examples/completion.zsh" \ + # https://github.com/deluan/zsh-in-docker/blob/55a4e476f78f37204af9dfc0290a92e52cf881b1/zsh-in-docker.sh#L121-L123 + && sed -i 's/^export LANG=.*/export LANG="zh_CN.UTF-8"/' /home/usr_vscode/.zshrc \ + && sed -i 's/^export LANGUAGE=.*/export LANGUAGE="zh_CN:zh"/' /home/usr_vscode/.zshrc \ + && sed -i 's/^export LC_ALL=.*/export LC_ALL="zh_CN.UTF-8"/' /home/usr_vscode/.zshrc \ + # >>>>> + && echo "" >> /home/usr_vscode/.zshrc \ + && echo "alias gemini='gemini --yolo -m gemini-2.5-pro'" >> /home/usr_vscode/.zshrc \ && echo "alias claude='claude --dangerously-skip-permissions'" >> /home/usr_vscode/.zshrc - # -a "source /usr/share/doc/fzf/examples/key-bindings.zsh" \ - # -a "source /usr/share/doc/fzf/examples/completion.zsh" \ # 安装 pnpm 和 Node.js # https://pnpm.io/installation#in-a-docker-container diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index d3e3372..6505f40 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -14,7 +14,7 @@ "build": { "dockerfile": "Dockerfile", "args": { - "TZ": "${localEnv:TZ:Asia/Shanghai}" + // } }, "runArgs": [ @@ -60,7 +60,7 @@ "terminal.integrated.defaultProfile.linux": "zsh", "terminal.integrated.profiles.linux": { "bash": { "path": "bash", "icon": "terminal-bash" }, - "zsh": { "path": "zsh", "icon": "terminal-debian" } + "zsh": { "path": "zsh", "icon": "terminal-debian", "overrideName": true } }, // https://stackoverflow.com/questions/75708866/vscode-dev-container-fails-to-load-ms-vscode-js-debug-extension-correctly @@ -83,18 +83,31 @@ "ANTHROPIC_BASE_URL": "${localEnv:ANTHROPIC_BASE_URL}", "GEMINI_API_KEY": "${localEnv:GEMINI_API_KEY}", "GOOGLE_GEMINI_BASE_URL": "${localEnv:GOOGLE_GEMINI_BASE_URL}", + "NODE_OPTIONS": "--max-old-space-size=4096", "CLAUDE_CONFIG_DIR": "/home/usr_vscode/.claude", - "NODE_OPTIONS": "--max-old-space-size=4096" + "TZ": "${localEnv:TZ:Asia/Shanghai}" }, "remoteUser": "usr_vscode", "mounts": [ "source=${localWorkspaceFolderBasename}-bashhistory,target=/commandhistory,type=volume", + "source=${localWorkspaceFolderBasename}-lingma,target=/home/usr_vscode/.lingma,type=volume", + "source=${localWorkspaceFolderBasename}-gemini,target=/home/usr_vscode/.gemini,type=volume", + "source=${localWorkspaceFolderBasename}-claude-code-router,target=/home/usr_vscode/.claude-code-router,type=volume", "source=${localWorkspaceFolderBasename}-claude-code-config,target=/home/usr_vscode/.claude,type=volume", + "source=${localWorkspaceFolderBasename}-pnpm-store,target=/home/usr_vscode/.pnpm-store,type=volume", "source=${localWorkspaceFolderBasename}-node_modules,target=${containerWorkspaceFolder}/node_modules,type=volume" ], - "postCreateCommand": "sudo chown usr_vscode node_modules", // 容器创建后执行 https://code.visualstudio.com/remote/advancedcontainers/improve-performance - "postStartCommand": "pnpm -v; echo '${localWorkspaceFolderBasename}'", // 每次容器启动时执行 - // "postAttachCommand": "pnpm config get store-dir", // 连接到容器后执行 + "postCreateCommand": { + "安装依赖": "sudo chown usr_vscode node_modules; pnpm install", + "fix-claude-code-router": "sudo chown -R usr_vscode /home/usr_vscode/.claude-code-router", + "fix-lingma": "sudo chown -R usr_vscode /home/usr_vscode/.lingma", + "fix-claude": "sudo chown -R usr_vscode /home/usr_vscode/.claude", + "fix-gemini": "sudo chown -R usr_vscode /home/usr_vscode/.gemini" + }, // 容器创建后执行 https://code.visualstudio.com/remote/advancedcontainers/improve-performance + "postStartCommand": { + "node version": "node -v" + }, // 每次容器启动时执行 + "postAttachCommand": "echo 容器已连接: ${containerWorkspaceFolder}", // 连接到容器后执行 // "updateRemoteUserUID": true, "waitFor": "postStartCommand", "workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,consistency=delegated", diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 5ef0101..31d8223 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -2,5 +2,6 @@ packages: - 'packages/*' useNodeVersion: 24.11.0 # https://pnpm.io/zh/settings#usenodeversion -shamefullyHoist: true # https://pnpm.io/zh/settings#shamefullyhoist +# shamefullyHoist: false # https://pnpm.io/zh/settings#shamefullyhoist + # https://pnpm.io/zh/settings#node-mirror ???