chore: auto generate vscode settings for first time install (#388)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									6ee7ccb019
								
							
						
					
					
						commit
						91d6cdb430
					
				|  | @ -33,7 +33,7 @@ output/* | |||
| *.swp | ||||
| 
 | ||||
| # Vscode files | ||||
| .vscode | ||||
| .vscode/settings.json | ||||
| 
 | ||||
| /patches | ||||
| /oldimpl | ||||
|  |  | |||
|  | @ -0,0 +1,15 @@ | |||
| { | ||||
|   "recommendations": [ | ||||
|     "editorconfig.editorconfig", | ||||
|     "esbenp.prettier-vscode", | ||||
|     "streetsidesoftware.code-spell-checker", | ||||
|     "codezombiech.gitignore", | ||||
|     "aaron-bond.better-comments", | ||||
|     "mikestead.dotenv", | ||||
|     "stylelint.vscode-stylelint" | ||||
|   ], | ||||
|   "unwantedRecommendations": [ | ||||
|     "nucllear.vscode-extension-auto-import", | ||||
|     "steoates.autoimport" | ||||
|   ] | ||||
| } | ||||
|  | @ -0,0 +1,183 @@ | |||
| { | ||||
|   "eslint.nodePath": "frontend/config/eslint-config/node_modules/eslint", | ||||
|   "prettier.prettierPath": "frontend/config/eslint-config/node_modules/prettier", | ||||
|   "editor.tabSize": 2, | ||||
|   "editor.insertSpaces": true, | ||||
|   "editor.formatOnSave": true, | ||||
|   "editor.formatOnType": false, | ||||
|   "editor.formatOnPaste": false, | ||||
|   "editor.defaultFormatter": "esbenp.prettier-vscode", | ||||
|   "editor.codeActionsOnSave": { | ||||
|     "source.fixAll": "never", | ||||
|     "source.fixAll.eslint": "never", | ||||
|     "source.removeUnused": "never", | ||||
|     "source.organizeImports": "never" | ||||
|     // "source.sortImports": "always" | ||||
|   }, | ||||
|   "editor.formatOnSaveMode": "modificationsIfAvailable", | ||||
|   "search.followSymlinks": false, | ||||
|   "search.exclude": { | ||||
|     "**/node_modules": true, | ||||
|     "**/.nyc_output": true, | ||||
|     "**/.rush": true, | ||||
|     "**/pnpm-lock.yaml": true, | ||||
|     "**/CHANGELOG.json": true, | ||||
|     "**/CHANGELOG.md": true, | ||||
|     "common/changes": true, | ||||
|     "**/output": true, | ||||
|     "**/lib": true, | ||||
|     "**/rush-logs": true, | ||||
|     "**/dist": true, | ||||
|     "**/coverage": true, | ||||
|     "common/temp": true | ||||
|   }, | ||||
|   "eslint.workingDirectories": [ | ||||
|     { | ||||
|       "mode": "auto" | ||||
|     } | ||||
|   ], | ||||
|   "files.defaultLanguage": "plaintext", | ||||
|   "files.associations": { | ||||
|     ".code-workspace": "jsonc", | ||||
|     ".babelrc": "json", | ||||
|     ".eslintrc": "jsonc", | ||||
|     ".eslintrc*.json": "jsonc", | ||||
|     ".stylelintrc": "javascript", | ||||
|     "stylelintrc": "jsonc", | ||||
|     "*.json": "jsonc", | ||||
|     "package.json": "json", | ||||
|     ".htmlhintrc": "jsonc", | ||||
|     "htmlhintrc": "jsonc", | ||||
|     "Procfile*": "shellscript", | ||||
|     "README": "markdown", | ||||
|     "**/coverage/**/*.*": "plaintext", | ||||
|     "OWNERS": "yaml", | ||||
|     // Set the pnpm-lock file to plaintext to avoid parsing; otherwise, VSCode may freeze when opening the file | ||||
|     "**/pnpm-lock.yaml": "plaintext", | ||||
|     "**/dist/**": "plaintext", | ||||
|     "**/dist_*/**": "plaintext", | ||||
|     "*.map": "plaintext", | ||||
|     "*.log": "plaintext" | ||||
|   }, | ||||
|   "files.exclude": { | ||||
|     "**/.git": true, | ||||
|     "**/.svn": true, | ||||
|     "**/.hg": true, | ||||
|     "**/CVS": true, | ||||
|     "**/.DS_Store": true, | ||||
|     "**/Thumbs.db": true, | ||||
|     "**/.rush": true, | ||||
|     "**/.swc": true | ||||
|   }, | ||||
|   "files.watcherExclude": { | ||||
|     "**/.git/objects/**": true, | ||||
|     "**/.git/subtree-cache/**": true, | ||||
|     "**/node_modules/*/**": true | ||||
|   }, | ||||
|   "search.useIgnoreFiles": true, | ||||
|   // | ||||
|   "editor.rulers": [80, 120], | ||||
|   "files.eol": "\n", | ||||
|   "files.trimTrailingWhitespace": true, | ||||
|   "files.insertFinalNewline": true, | ||||
|   "cSpell.diagnosticLevel": "Warning", | ||||
|   "eslint.probe": [ | ||||
|     "javascript", | ||||
|     "javascriptreact", | ||||
|     "typescript", | ||||
|     "typescriptreact" | ||||
|   ], | ||||
|   "editor.semanticHighlighting.enabled": false, | ||||
|   "eslint.format.enable": false, | ||||
|   "eslint.enable": true, | ||||
|   "eslint.useFlatConfig": true, | ||||
|   "eslint.codeActionsOnSave.mode": "problems", | ||||
|   "eslint.lintTask.enable": false, | ||||
|   "javascript.validate.enable": false, | ||||
|   "typescript.tsdk": "frontend/config/ts-config/node_modules/typescript/lib", | ||||
|   "typescript.enablePromptUseWorkspaceTsdk": true, | ||||
|   "typescript.disableAutomaticTypeAcquisition": true, | ||||
|   "typescript.format.enable": false, | ||||
|   "typescript.referencesCodeLens.enabled": false, | ||||
|   "typescript.preferGoToSourceDefinition": true, | ||||
|   "typescript.updateImportsOnFileMove.enabled": "never", | ||||
|   // tsserver logs are not automatically deleted and accumulate over time, causing disk space issues, so disabled by default | ||||
|   "typescript.tsserver.log": "off", | ||||
|   "typescript.tsserver.experimental.enableProjectDiagnostics": false, | ||||
|   "typescript.workspaceSymbols.excludeLibrarySymbols": true, | ||||
|   "editor.minimap.enabled": true, | ||||
|   "typescript.preferences.includePackageJsonAutoImports": "off", | ||||
|   "typescript.suggest.autoImports": true, | ||||
|   "typescript.tsserver.maxTsServerMemory": 10240, | ||||
|   "typescript.tsserver.enableRegionDiagnostics": false, | ||||
|   "typescript.tsserver.watchOptions": { | ||||
|     "fallbackPolling": "dynamicPriorityPolling", | ||||
|     "synchronousWatchDirectory": true, | ||||
|     "watchDirectory": "useFsEvents", | ||||
|     "watchFile": "useFsEventsOnParentDirectory", | ||||
|     "excludeDirectories": ["/**/node_modules"], | ||||
|     "excludeLibrarySymbols": true, | ||||
|     "excludeFiles": ["/**/node_modules/**"] | ||||
|   }, | ||||
|   "css.validate": false, | ||||
|   "scss.validate": false, | ||||
|   "less.validate": false, | ||||
|   "stylelint.enable": true, | ||||
|   "stylelint.validate": ["css", "scss", "less"], | ||||
|   "stylelint.stylelintPath": "frontend/config/stylelint-config/node_modules/stylelint", | ||||
|   "emmet.triggerExpansionOnTab": true, | ||||
|   "[typescript]": { | ||||
|     "editor.defaultFormatter": "esbenp.prettier-vscode" | ||||
|   }, | ||||
|   "[yaml]": { | ||||
|     "editor.defaultFormatter": "esbenp.prettier-vscode" | ||||
|   }, | ||||
|   "[css]": { | ||||
|     "editor.defaultFormatter": "esbenp.prettier-vscode" | ||||
|   }, | ||||
|   "[html]": { | ||||
|     "editor.defaultFormatter": "esbenp.prettier-vscode" | ||||
|   }, | ||||
|   "[javascript]": { | ||||
|     "editor.defaultFormatter": "esbenp.prettier-vscode" | ||||
|   }, | ||||
|   "[javascriptreact]": { | ||||
|     "editor.defaultFormatter": "esbenp.prettier-vscode" | ||||
|   }, | ||||
|   "[json]": { | ||||
|     "editor.defaultFormatter": "esbenp.prettier-vscode" | ||||
|   }, | ||||
|   "[jsonc]": { | ||||
|     "editor.defaultFormatter": "esbenp.prettier-vscode" | ||||
|   }, | ||||
|   "[less]": { | ||||
|     "editor.defaultFormatter": "stylelint.vscode-stylelint" | ||||
|   }, | ||||
|   "[scss]": { | ||||
|     "editor.defaultFormatter": "esbenp.prettier-vscode" | ||||
|   }, | ||||
|   "[typescriptreact]": { | ||||
|     "editor.defaultFormatter": "esbenp.prettier-vscode" | ||||
|   }, | ||||
|   "[ignore]": { | ||||
|     "editor.defaultFormatter": "foxundermoon.shell-format" | ||||
|   }, | ||||
|   "[shellscript]": { | ||||
|     "editor.defaultFormatter": "foxundermoon.shell-format" | ||||
|   }, | ||||
|   "[dotenv]": { | ||||
|     "editor.defaultFormatter": "foxundermoon.shell-format" | ||||
|   }, | ||||
|   "[svg]": { | ||||
|     "editor.defaultFormatter": "jock.svg" | ||||
|   }, | ||||
|   "svg.preview.background": "white", | ||||
|   "[xml]": { | ||||
|     "editor.defaultFormatter": "mblode.pretty-formatter" | ||||
|   }, | ||||
|   "[sql]": { | ||||
|     "editor.defaultFormatter": "adpyke.vscode-sql-formatter" | ||||
|   }, | ||||
|   "git.openRepositoryInParentFolders": "always", | ||||
|   "references.preferredLocation": "view" | ||||
| } | ||||
|  | @ -13,7 +13,7 @@ | |||
|   "repository": {}, | ||||
|   "eventHooks": { | ||||
|     "preRushInstall": [], | ||||
|     "postRushInstall": [], | ||||
|     "postRushInstall": ["scripts/hooks/post-rush-install.sh"], | ||||
|     "preRushBuild": [], | ||||
|     "postRushBuild": [] | ||||
|   }, | ||||
|  |  | |||
|  | @ -0,0 +1,26 @@ | |||
| #!/bin/bash | ||||
| # | ||||
| # Copyright 2025 coze-dev Authors | ||||
| # | ||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| # you may not use this file except in compliance with the License. | ||||
| # You may obtain a copy of the License at | ||||
| # | ||||
| #     http://www.apache.org/licenses/LICENSE-2.0 | ||||
| # | ||||
| # Unless required by applicable law or agreed to in writing, software | ||||
| # distributed under the License is distributed on an "AS IS" BASIS, | ||||
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| # See the License for the specific language governing permissions and | ||||
| # limitations under the License. | ||||
| # | ||||
| 
 | ||||
| 
 | ||||
| set -e | ||||
| 
 | ||||
| # Get script directory | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| 
 | ||||
| # Setup VSCode settings if needed | ||||
| bash "$SCRIPT_DIR/setup-vscode-settings.sh" | ||||
| 
 | ||||
|  | @ -0,0 +1,74 @@ | |||
| #!/bin/bash | ||||
| # | ||||
| # Copyright 2025 coze-dev Authors | ||||
| # | ||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| # you may not use this file except in compliance with the License. | ||||
| # You may obtain a copy of the License at | ||||
| # | ||||
| #     http://www.apache.org/licenses/LICENSE-2.0 | ||||
| # | ||||
| # Unless required by applicable law or agreed to in writing, software | ||||
| # distributed under the License is distributed on an "AS IS" BASIS, | ||||
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| # See the License for the specific language governing permissions and | ||||
| # limitations under the License. | ||||
| # | ||||
| 
 | ||||
| 
 | ||||
| # Script to ensure .vscode/settings.json exists by copying from template | ||||
| # This script creates default VSCode settings if none exist | ||||
| 
 | ||||
| set -e | ||||
| 
 | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" | ||||
| VSCODE_DIR="$PROJECT_ROOT/.vscode" | ||||
| SETTINGS_FILE="$VSCODE_DIR/settings.json" | ||||
| TEMPLATE_FILE="$VSCODE_DIR/settings.template.json" | ||||
| 
 | ||||
| # Function to log messages (only when VERBOSE=true) | ||||
| log() { | ||||
|     if [[ "${VERBOSE:-false}" == "true" ]]; then | ||||
|         echo "[setup-vscode-settings] $1" | ||||
|     fi | ||||
| } | ||||
| 
 | ||||
| # Create .vscode directory if it doesn't exist | ||||
| if [[ ! -d "$VSCODE_DIR" ]]; then | ||||
|     log "Creating .vscode directory..." | ||||
|     mkdir -p "$VSCODE_DIR" | ||||
| fi | ||||
| 
 | ||||
| # Check if settings.json exists | ||||
| if [[ ! -f "$SETTINGS_FILE" ]]; then | ||||
|     log "settings.json not found" | ||||
|      | ||||
|     # Check if template file exists | ||||
|     if [[ -f "$TEMPLATE_FILE" ]]; then | ||||
|         log "Copying settings.template.json to settings.json..." | ||||
|         cp "$TEMPLATE_FILE" "$SETTINGS_FILE" | ||||
|         log "✓ settings.json created from template" | ||||
|     else | ||||
|         log "Warning: settings.template.json not found, creating minimal settings.json..." | ||||
|          | ||||
|         # Create a minimal settings.json if template doesn't exist | ||||
|         cat > "$SETTINGS_FILE" << 'EOF' | ||||
| { | ||||
|   "search.exclude": { | ||||
|     "**/node_modules": true, | ||||
|     "**/common/temp": true, | ||||
|     "**/.rush": true | ||||
|   }, | ||||
|   "files.exclude": { | ||||
|     "**/node_modules": true, | ||||
|     "**/common/temp": true, | ||||
|     "**/.rush": true | ||||
|   } | ||||
| } | ||||
| EOF | ||||
|         log "✓ Minimal settings.json created" | ||||
|     fi | ||||
| else | ||||
|     log "settings.json already exists, skipping..." | ||||
| fi | ||||
		Loading…
	
		Reference in New Issue