{ // 插件 id 及名称 "name": "variable-conversion", "displayName": "Variable Conversion", "description": "一个强大的变量名转换插件,支持右键菜单、快捷键、底栏等多种方式使用,支持小驼峰、大驼峰(帕斯卡)、下划线(蛇形)、连字符(脊柱式)、全小写、全大写等常用命名方式(及组合)转换。 \nA powerful variable naming conversion extension. You can use it through the editer menu, shortcut keys and bottom bar. Support camel, pascal, snake, kebab(spinal), lower, upper case, and more.", // 版本号 "version": "0.0.4", // logo "icon": "image/logo.png", "publisher": "coder-xiaomo", "engines": { "vscode": "^1.87.0" }, "categories": [ "Other" ], // 仓库地址 "repository": { "type": "git", "url": "https://github.com/coder-xiaomo/variable-conversion-vscode-extension.git" }, "repositories": [ { "type": "git", "url": "https://git.only4.work/coder-xiaomo/variable-conversion-vscode-extension.git" }, { "type": "git", "url": "https://gitee.com/coder-xiaomo/variable-conversion-vscode-extension.git" } ], "main": "./out/extension.js", "activationEvents": [ // 当编辑器完成启动时激活 "onStartupFinished", // 当用户选中文本时激活 "onTextSelected" ], "contributes": { "commands": [ /** * 右键菜单 */ { "command": "variable-conversion.convertCase", "title": "字符串转换" }, /** * 右键菜单 - 子菜单 */ // group-1-camel { "command": "variable-conversion.toCamelCase", "title": "小驼峰(驼峰)命名 (Camel Case) [ fooBar ]" }, { "command": "variable-conversion.toPascalCase", "title": "大驼峰(帕斯卡)命名 (Pascal Case) [ FooBar ]" }, // group-2-snake { "command": "variable-conversion.toSnakeCase", "title": "下划线(蛇形)命名 (Snake Case) [ foo_bar ]" }, { "command": "variable-conversion.toSnakeUpperCase", "title": "下划线(蛇形) + 全大写命名 (Snake Upper Case) [ FOO_BAR ]" }, { "command": "variable-conversion.toSnakePascalCase", "title": "下划线(蛇形) + 大驼峰(帕斯卡)命名 (Snake Pascal Case) [ Foo_Bar ]" }, { "command": "variable-conversion.toSnakeCamelCase", "title": "下划线(蛇形) + 小驼峰(驼峰)命名 (Snake Camel Case) [ foo_Bar ]" }, // group-3-kebab { "command": "variable-conversion.toKebabCase", "title": "连字符(脊柱式)命名 (Kebab/Spinal Case) [ foo-bar ]" }, { "command": "variable-conversion.toKebabUpperCase", "title": "连字符(脊柱式) + 全大写命名 (Kebab Upper Case) [ FOO-BAR ]" }, { "command": "variable-conversion.toKebabPascalCase", "title": "连字符(脊柱式) + 大驼峰(帕斯卡)命名 (Kebab Pascal Case) [ Foo-Bar ]" }, { "command": "variable-conversion.toKebabCamelCase", "title": "连字符(脊柱式) + 小驼峰(驼峰)命名 (Kebab Camel Case) [ foo-Bar ]" }, // group-4-upper-lower { "command": "variable-conversion.toLowerCase", "title": "全小写 (Lower Case) [ foobar ]" }, { "command": "variable-conversion.toUpperCase", "title": "全大写 (Upper Case) [ FOOBAR ]" } // 隐藏命令 // { // "command": "editor.action.transformToCamelcase", // "title": "[VSCode 自带] 驼峰式大小写 (Camel Case) [ fooBar ]", // "enablement": "false" // }, // { // "command": "editor.action.transformToKebabcase", // "title": "[VSCode 自带] Kebab 命名 (Kebab Case) [ foo-bar ]", // "enablement": "false" // }, // { // "command": "editor.action.transformToTitlecase", // "title": "[VSCode 自带] 词首字母大写 (Title Case) [ Foo Bar ]", // "enablement": "false" // }, // { // "command": "editor.action.transformToLowercase", // "title": "[VSCode 自带] 转换为小写 (Lower Case) [ foo bar ]", // "enablement": "false" // }, // { // "command": "editor.action.transformToUppercase", // "title": "[VSCode 自带] 转换为大写 (Upper Case) [ FOO BAR ]", // "enablement": "false" // }, // { // "command": "editor.action.transformToSnakecase", // "title": "[VSCode 自带] 转换为蛇形命名法 (Snake Case) [ foo_bar ]", // "enablement": "false" // } ], // docs: https://code.visualstudio.com/docs/getstarted/keybindings#_accepted-keys "keybindings": [ // 绑定快捷键 { "command": "variable-conversion.convertCase", "key": "shift+alt+t", "when": "editorTextFocus" } ], // docs: https://code.visualstudio.com/api/references/contribution-points#contributes.menus "menus": { // 编辑器右键菜单 "editor/context": [ { "when": "editorTextFocus", "command": "variable-conversion.convertCase", // "group": "1_modification@9" "group": "navigation@9" }, { "when": "editorTextFocus && _textSelectionLength >= 1", "submenu": "variable-conversion.stringConversionMenu", // docs: https://code.visualstudio.com/api/references/contribution-points#Sorting-of-groups // "group": "1_modification@9" "group": "navigation@9" } ], "variable-conversion.stringConversionMenu": [ { "command": "variable-conversion.toCamelCase", "group": "group-1-camel@1" }, { "command": "variable-conversion.toPascalCase", "group": "group-1-camel@2" }, { "command": "variable-conversion.toSnakeCase", "group": "group-2-snake@1" }, { "command": "variable-conversion.toSnakeUpperCase", "group": "group-2-snake@2" }, { "command": "variable-conversion.toSnakePascalCase", "group": "group-2-snake@3" }, { "command": "variable-conversion.toSnakeCamelCase", "group": "group-2-snake@4" }, { "command": "variable-conversion.toKebabCase", "group": "group-3-kebab@1" }, { "command": "variable-conversion.toKebabUpperCase", "group": "group-3-kebab@2" }, { "command": "variable-conversion.toKebabPascalCase", "group": "group-3-kebab@3" }, { "command": "variable-conversion.toKebabCamelCase", "group": "group-3-kebab@4" }, { "command": "variable-conversion.toLowerCase", "group": "group-4-upper-lower@1" }, { "command": "variable-conversion.toUpperCase", "group": "group-4-upper-lower@2" } // 隐藏菜单项 // { // "command": "editor.action.transformToCamelcase", // "group": "group-vscode", // "when": "false" // }, // { // "command": "editor.action.transformToKebabcase", // "group": "group-vscode", // "when": "false" // }, // { // "command": "editor.action.transformToTitlecase", // "group": "group-vscode", // "when": "false" // }, // { // "command": "editor.action.transformToLowercase", // "group": "group-vscode", // "when": "false" // }, // { // "command": "editor.action.transformToUppercase", // "group": "group-vscode", // "when": "false" // }, // { // "command": "editor.action.transformToSnakecase", // "group": "group-vscode", // "when": "false" // } ] }, // docs: https://code.visualstudio.com/api/references/contribution-points#contributes.submenus "submenus": [ { "id": "variable-conversion.stringConversionMenu", "label": "将字符串转换为..." } ] }, "scripts": { "vscode:prepublish": "npm run compile", "compile": "tsc -p ./", "watch": "tsc -watch -p ./", "pretest": "npm run compile && npm run lint", "lint": "eslint src --ext ts", "test": "vscode-test", "package": "echo \"start `vsce package`\" & vsce package", "publish": "vsce publish" }, "devDependencies": { "@types/mocha": "^10.0.6", "@types/node": "18.x", "@types/vscode": "^1.87.0", "@typescript-eslint/eslint-plugin": "^7.4.0", "@typescript-eslint/parser": "^7.4.0", "@vscode/test-cli": "^0.0.8", "@vscode/test-electron": "^2.3.9", "eslint": "^8.57.0", "typescript": "^5.3.3" } }