BIS2BIS \ Magento Devkit
This vscode extension pack is a collection of extensions that can help you develop Magento 2 modules.
PHP Extensions
Magento utilizes PHP as a server-side scripting language. The following extensions are recommended for PHP development.
Intelephense is a high performance PHP language server packed full of essential features for productive PHP development.
Inserts parameter hints(type, name or both) into function calls to easily understand the parameter role.
This extension is a debug adapter between VS Code and Xdebug by Derick Rethans.
This extension formats your PHP code in Visual Studio Code, with a large choice of coding styles.
JavaScript Extensions
Integrates ESLint into VS Code. If you are new to ESLint check the documentation.
Prettier is an opinionated code formatter. It enforces a consistent style by parsing your code and re-printing it with its own rules that take the maximum line length into account, wrapping code when necessary.
This plugin attempts to override user/workspace settings with settings found in .editorconfig files. No additional or vscode-specific files are required. As with any EditorConfig plugin, if root=true is not specified, EditorConfig will continue to look for an .editorconfig file outside of the project.
Supercharge Git within VS Code — Visualize code authorship at a glance via Git blame annotations and CodeLens, seamlessly navigate and explore Git repositories, gain valuable insights via rich visualizations and powerful comparison commands, and so much more
Automatically add HTML/XML close tag, same as Visual Studio IDE or Sublime Text.
Auto rename paired HTML/XML tag
Improve your code commenting by annotating with alert, informational, TODOs, and more!
Visual Studio Code plugin that autocompletes filenames
Makes indentation easier to read
Code Customization
Material Design Icons for Visual Studio Code
A very dark and vibrant Monokai based theme.
Recommended Settings
{
// Editor settings
"editor.acceptSuggestionOnCommitCharacter": false,
"editor.accessibilitySupport": "off",
"editor.cursorBlinking": "smooth",
"editor.cursorSmoothCaretAnimation": "on",
"editor.cursorSurroundingLinesStyle": "all",
"editor.fontLigatures": true,
"editor.foldingStrategy": "auto",
"editor.folding": true,
"editor.formatOnType": false,
"editor.formatOnSave": true,
"editor.links": true,
"editor.tabSize": 4,
"editor.guides.indentation": true,
"editor.lightbulb.enabled": true,
"editor.lineHeight": 0,
"editor.matchBrackets": "always",
"editor.inlineSuggest.enabled": true,
"editor.minimap.maxColumn": 120,
"editor.lineNumbers": "on",
"editor.insertSpaces": true,
"editor.smoothScrolling": true,
"editor.wordSeparators": "`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?",
"editor.minimap.autohide": true,
"editor.minimap.renderCharacters": false,
"editor.wordWrapColumn": 80,
"editor.wrappingIndent": "same",
"editor.parameterHints.enabled": false,
"editor.renderLineHighlight": "gutter",
"editor.renderWhitespace": "all",
"editor.autoIndent": "full",
"editor.rulers": [
80,
120
],
"editor.semanticHighlighting.enabled": false,
"editor.wordWrap": "on",
// Explorer settings
"explorer.compactFolders": false,
"explorer.confirmDragAndDrop": false,
// Workbench settings
"workbench.activityBar.visible": true,
"workbench.iconTheme": "material-icon-theme",
"workbench.startupEditor": "none",
"workbench.editor.closeEmptyGroups": true,
"workbench.tips.enabled": false,
"workbench.editor.tabSizing": "fixed",
"workbench.tree.indent": 25,
"workbench.enableExperiments": true,
"workbench.tree.renderIndentGuides": "always",
// PHP settings
"php.suggest.basic": false,
"php.validate.enable": false,
// PHP Formmatter
"phpfmt.passes": [
"GeneratePHPDoc",
"OrderAndRemoveUseClauses",
"PHPDocTypesToFunctionTypehint",
"PrettyPrintDocBlocks"
],
// Material Icon Theme settings
"material-icon-theme.activeIconPack": "nest",
"material-icon-theme.files.associations": {
"*.proto": "3d",
"*.webpack.js": "webpack",
"ormconfig.json": "database",
"tsconfig.json": "tune"
},
"material-icon-theme.folders.associations": {
"_shared": "shared",
"adapters": "contract",
"domain": "class",
"dtos": "typescript",
"entities": "class",
"eslint-config": "tools",
"factories": "class",
"fakes": "mock",
"grpc": "pipe",
"http": "container",
"implementations": "core",
"infra": "app",
"kafka": "pipe",
"kube": "kubernetes",
"main": "lib",
"mappers": "meta",
"migrations": "tools",
"modules": "components",
"presentation": "template",
"protocols": "contract",
"protos": "pipe",
"providers": "include",
"repositories": "mappings",
"schemas": "class",
"subscribers": "messages",
"typeorm": "database",
"use-cases": "functions",
"useCases": "functions",
"view-models": "views",
"websockets": "pipe"
},
}