├── .prettierrc ├── jsconfig.json ├── .eslintrc ├── .babelrc ├── .editorconfig ├── LICENSE ├── README.md ├── .vscode ├── settings.json ├── extensions.json └── user.json ├── package.json └── .stylelintrc.js /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true, 3 | "printWidth": 80, 4 | "trailingComma": "none", 5 | "arrowParens": "always" 6 | } 7 | -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "target": "es6" 5 | }, 6 | "include": [], 7 | "exclude": ["node_modules"] 8 | } 9 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "env": { 4 | "browser": true 5 | }, 6 | "globals": { 7 | "expect": true 8 | }, 9 | "extends": [ 10 | "airbnb-base", 11 | "plugin:vue/recommended", 12 | "prettier", 13 | "prettier/vue" 14 | ], 15 | "plugins": [ 16 | "prettier", 17 | "vue" 18 | ], 19 | "parserOptions": { 20 | "parser": "babel-eslint", 21 | "sourceType": "module" 22 | }, 23 | "rules": {} 24 | } 25 | -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | "@babel/plugin-proposal-object-rest-spread", 4 | "@babel/plugin-proposal-class-properties" 5 | ], 6 | "presets": [ 7 | [ 8 | "@babel/preset-env", 9 | { 10 | "useBuiltIns": "entry", 11 | "targets": "> 0.25%, not dead", 12 | "forceAllTransforms": true 13 | } 14 | ], 15 | [ 16 | "minify", 17 | { 18 | "evaluate": false, 19 | "keepFnName": true, 20 | "keepClassName": true, 21 | "mangle": false 22 | } 23 | ] 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # This file is for unifying the coding style for different editors and IDEs 2 | # editorconfig.org 3 | 4 | root = true 5 | 6 | [*] 7 | charset = utf-8 8 | end_of_line = lf 9 | insert_final_newline = true 10 | trim_trailing_whitespace = true 11 | indent_style = tab 12 | indent_size = 2 13 | 14 | [{*.yml}] 15 | indent_style = space 16 | indent_size = 2 17 | 18 | [{*.yaml}] 19 | indent_style = space 20 | indent_size = 2 21 | 22 | [*.txt] 23 | end_of_line = crlf 24 | 25 | [*.md] 26 | trim_trailing_whitespace = false 27 | 28 | [*.php] 29 | indent_style = tab 30 | indent_size = 2 31 | 32 | [*.scss] 33 | indent_style = tab 34 | indent_size = 2 35 | 36 | [*.sass] 37 | indent_style = tab 38 | indent_size = 2 39 | 40 | [*.css] 41 | indent_style = tab 42 | indent_size = 2 43 | 44 | [*.js] 45 | indent_style = space 46 | indent_size = 2 47 | 48 | [*.json] 49 | indent_style = space 50 | indent_size = 2 51 | 52 | [*.html] 53 | indent_style = tab 54 | indent_size = 2 55 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | This is free and unencumbered software released into the public domain. 2 | 3 | Anyone is free to copy, modify, publish, use, compile, sell, or 4 | distribute this software, either in source code form or as a compiled 5 | binary, for any purpose, commercial or non-commercial, and by any 6 | means. 7 | 8 | In jurisdictions that recognize copyright laws, the author or authors 9 | of this software dedicate any and all copyright interest in the 10 | software to the public domain. We make this dedication for the benefit 11 | of the public at large and to the detriment of our heirs and 12 | successors. We intend this dedication to be an overt act of 13 | relinquishment in perpetuity of all present and future rights to this 14 | software under copyright law. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 20 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | 24 | For more information, please refer to 25 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # vscode-vue-vetur-eslint-prettier-airbnb 2 | * One config to rule them all - Working, fast saving, no double rules. 3 | * Auto-formats and lints .vue, .js, .scss 4 | * If anyone is interested I have configs that plug and play with all these which add auto-format and linting for PHP files as well. 5 | 6 | package.json contains all my current configuration settings for one of my projects, well all the ones I could share related to JS and vue. But the babel, stylelint, prettier, eslint configs are all bundled together. Just seems easier to me. 7 | 8 | NOTE: Now I put all my dot files into the package.json file to reduce clutter, so I'll include it both ways here. 9 | 10 | ## VSCode Extensions 11 | * EditorConfig for VS Code - editorconfig.editorconfig 12 | * ESLint - dbaeumer.vscode-eslint 13 | * Prettier - Code formatter - esbenp.prettier-vscode 14 | * stylelint - shinnn.stylelint 15 | * Vetur - octref.vetur 16 | 17 | Added my full list of extensions and also my user settings along with the workspace settings. 18 | This is still working great and I use it everyday without fail. 19 | 20 | If anyone is interested to load up my full setup they will probably be in for a suprise about how I have the editor set up. 21 | **I promise if you tried the file explorer on the right side for a week or two you would never go back!!!** 22 | 23 | I also use [VSCodium from this github repo](https://github.com/VSCodium/vscodium) and my user settings have pretty much every random hidden tracker instance turned off that I could find. 24 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.tabSize": 2, 3 | "editor.insertSpaces": false, 4 | "editor.detectIndentation": false, 5 | "editor.formatOnPaste": true, 6 | "editor.formatOnSave": true, 7 | "editor.formatOnSaveTimeout": 10000, 8 | "files.insertFinalNewline": true, 9 | "files.trimTrailingWhitespace": true, 10 | "javascript.format.enable": false, 11 | "npm.packageManager": "yarn", 12 | "eslint.packageManager": "yarn", 13 | "eslint.enable": true, 14 | "eslint.alwaysShowStatus": true, 15 | "eslint.provideLintTask": false, 16 | "eslint.run": "onType", 17 | "eslint.autoFixOnSave": true, 18 | "eslint.validate": [ 19 | "javascript", 20 | "javascriptreact", 21 | { 22 | "language": "vue", 23 | "autoFix": true 24 | } 25 | ], 26 | "css.validate": false, 27 | "less.validate": false, 28 | "scss.validate": false, 29 | "scss.showErrors": true, 30 | "stylelint.enable": true, 31 | "prettier.eslintIntegration": true, 32 | "prettier.stylelintIntegration": true, 33 | "prettier.disableLanguages": ["vue"], 34 | "vetur.validation.template": false, 35 | "vetur.format.options.useTabs": true, 36 | "vetur.format.defaultFormatter.less": "prettier", 37 | "vetur.format.defaultFormatter.postcss": "prettier", 38 | "vetur.format.defaultFormatter.scss": "prettier", 39 | "vetur.format.defaultFormatter.js": "prettier-eslint", 40 | "vetur.format.defaultFormatter.css": "prettier", 41 | "vetur.format.defaultFormatter.html": "prettyhtml", 42 | "vetur.format.defaultFormatterOptions": { 43 | "prettyhtml": { 44 | "printWidth": 80, 45 | "singleQuote": false, 46 | "wrapAttributes": true, 47 | "sortAttributes": false 48 | } 49 | }, 50 | "files.watcherExclude": { 51 | "**/.git/objects/**": true, 52 | "**/.git/subtree-cache/**": true, 53 | "**/node_modules/**": true, 54 | "**/vendor/**": true 55 | }, 56 | "scss.scannerExclude": [ 57 | "**/.git", 58 | "**/node_modules", 59 | "**/bower_components", 60 | "**/vendor" 61 | ], 62 | "[php]": { 63 | "editor.insertSpaces": false 64 | }, 65 | "[javascript]": { 66 | "editor.insertSpaces": true 67 | }, 68 | "[json]": { 69 | "editor.insertSpaces": true 70 | }, 71 | "[xml]": { 72 | "editor.insertSpaces": true 73 | }, 74 | "[yaml]": { 75 | "editor.insertSpaces": true 76 | }, 77 | "[scss]": { 78 | "editor.insertSpaces": false 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "metadata": { 4 | "id": "d3836729-9cc1-42c1-b2af-d50071f57d29", 5 | "publisherId": "formulahendry.auto-close-tag", 6 | "publisherDisplayName": "formulahendry" 7 | }, 8 | "name": "auto-close-tag", 9 | "publisher": "formulahendry", 10 | "version": "0.5.6" 11 | }, 12 | { 13 | "metadata": { 14 | "id": "6e440e71-8ed9-4f25-bb78-4b13096b8a03", 15 | "publisherId": "formulahendry.auto-rename-tag", 16 | "publisherDisplayName": "formulahendry" 17 | }, 18 | "name": "auto-rename-tag", 19 | "publisher": "formulahendry", 20 | "version": "0.0.15" 21 | }, 22 | { 23 | "metadata": { 24 | "id": "5a6e2b21-1d61-4acd-b31b-907f9c23f18a", 25 | "publisherId": "CoenraadS.bracket-pair-colorizer-2", 26 | "publisherDisplayName": "CoenraadS" 27 | }, 28 | "name": "bracket-pair-colorizer-2", 29 | "publisher": "CoenraadS", 30 | "version": "0.0.25" 31 | }, 32 | { 33 | "metadata": { 34 | "id": "e337c67b-55c2-4fef-8949-eb260e7fb7fd", 35 | "publisherId": "Shan.code-settings-sync", 36 | "publisherDisplayName": "Shan" 37 | }, 38 | "name": "code-settings-sync", 39 | "publisher": "Shan", 40 | "version": "3.2.4" 41 | }, 42 | { 43 | "metadata": { 44 | "id": "90a838c3-675b-4b87-b7a5-75ea88432cce", 45 | "publisherId": "joelday.docthis", 46 | "publisherDisplayName": "joelday" 47 | }, 48 | "name": "docthis", 49 | "publisher": "joelday", 50 | "version": "0.7.1" 51 | }, 52 | { 53 | "metadata": { 54 | "id": "f60a60a6-95ba-42d4-b41c-3d24c1b89588", 55 | "publisherId": "EditorConfig.EditorConfig", 56 | "publisherDisplayName": "EditorConfig" 57 | }, 58 | "name": "EditorConfig", 59 | "publisher": "EditorConfig", 60 | "version": "0.12.6" 61 | }, 62 | { 63 | "metadata": { 64 | "id": "4de763bd-505d-4978-9575-2b7696ecf94e", 65 | "publisherId": "eamodio.gitlens", 66 | "publisherDisplayName": "eamodio" 67 | }, 68 | "name": "gitlens", 69 | "publisher": "eamodio", 70 | "version": "9.4.1" 71 | }, 72 | { 73 | "metadata": { 74 | "id": "a2cec723-5349-460d-9de9-0fd1f8d3456f", 75 | "publisherId": "xabikos.JavaScriptSnippets", 76 | "publisherDisplayName": "xabikos" 77 | }, 78 | "name": "JavaScriptSnippets", 79 | "publisher": "xabikos", 80 | "version": "1.7.2" 81 | }, 82 | { 83 | "metadata": { 84 | "id": "dff6b801-247e-40e9-82e8-8c9b1d19d1b8", 85 | "publisherId": "christian-kohler.npm-intellisense", 86 | "publisherDisplayName": "christian-kohler" 87 | }, 88 | "name": "npm-intellisense", 89 | "publisher": "christian-kohler", 90 | "version": "1.3.0" 91 | }, 92 | { 93 | "metadata": { 94 | "id": "a41c1549-4053-44d4-bf30-60fc809b4a86", 95 | "publisherId": "christian-kohler.path-intellisense", 96 | "publisherDisplayName": "christian-kohler" 97 | }, 98 | "name": "path-intellisense", 99 | "publisher": "christian-kohler", 100 | "version": "1.4.2" 101 | }, 102 | { 103 | "metadata": { 104 | "id": "d1b4c348-b276-414f-9f5e-d951102dd208", 105 | "publisherId": "philsinatra.popping-and-locking-vscode-black", 106 | "publisherDisplayName": "philsinatra" 107 | }, 108 | "name": "popping-and-locking-vscode-black", 109 | "publisher": "philsinatra", 110 | "version": "1.1.6" 111 | }, 112 | { 113 | "metadata": { 114 | "id": "96fa4707-6983-4489-b7c5-d5ffdfdcce90", 115 | "publisherId": "esbenp.prettier-vscode", 116 | "publisherDisplayName": "esbenp" 117 | }, 118 | "name": "prettier-vscode", 119 | "publisher": "esbenp", 120 | "version": "1.7.3" 121 | }, 122 | { 123 | "metadata": { 124 | "id": "f8b5562e-a2d9-49ab-9f91-e7da91998a92", 125 | "publisherId": "shinnn.stylelint", 126 | "publisherDisplayName": "shinnn" 127 | }, 128 | "name": "stylelint", 129 | "publisher": "shinnn", 130 | "version": "0.47.0" 131 | }, 132 | { 133 | "metadata": { 134 | "id": "2f5dd8cb-d251-4d70-abfe-ddebcb077483", 135 | "publisherId": "octref.vetur", 136 | "publisherDisplayName": "octref" 137 | }, 138 | "name": "vetur", 139 | "publisher": "octref", 140 | "version": "0.14.5" 141 | }, 142 | { 143 | "metadata": { 144 | "id": "d7b592dd-41c9-4f2b-acf3-055ae65e55c6", 145 | "publisherId": "dzannotti.vscode-babel-coloring", 146 | "publisherDisplayName": "dzannotti" 147 | }, 148 | "name": "vscode-babel-coloring", 149 | "publisher": "dzannotti", 150 | "version": "0.0.4" 151 | }, 152 | { 153 | "metadata": { 154 | "id": "0479fc1c-3d67-49f9-b087-fb9069afe48f", 155 | "publisherId": "PeterJausovec.vscode-docker", 156 | "publisherDisplayName": "PeterJausovec" 157 | }, 158 | "name": "vscode-docker", 159 | "publisher": "PeterJausovec", 160 | "version": "0.5.1" 161 | }, 162 | { 163 | "metadata": { 164 | "id": "583b2b34-2c1e-4634-8c0b-0b82e283ea3a", 165 | "publisherId": "dbaeumer.vscode-eslint", 166 | "publisherDisplayName": "dbaeumer" 167 | }, 168 | "name": "vscode-eslint", 169 | "publisher": "dbaeumer", 170 | "version": "1.8.0" 171 | }, 172 | { 173 | "metadata": { 174 | "id": "829a192d-496c-44ac-87f3-0a84ce36a853", 175 | "publisherId": "emmanuelbeziat.vscode-great-icons", 176 | "publisherDisplayName": "emmanuelbeziat" 177 | }, 178 | "name": "vscode-great-icons", 179 | "publisher": "emmanuelbeziat", 180 | "version": "2.1.46" 181 | }, 182 | { 183 | "metadata": { 184 | "id": "ae9e3eb0-3357-4cc0-90ee-598d2d384757", 185 | "publisherId": "eg2.vscode-npm-script", 186 | "publisherDisplayName": "eg2" 187 | }, 188 | "name": "vscode-npm-script", 189 | "publisher": "eg2", 190 | "version": "0.3.5" 191 | }, 192 | { 193 | "metadata": { 194 | "id": "de4d9368-918a-44c0-a1b8-9fa49764d16a", 195 | "publisherId": "ego-digital.vscode-powertools", 196 | "publisherDisplayName": "ego-digital" 197 | }, 198 | "name": "vscode-powertools", 199 | "publisher": "ego-digital", 200 | "version": "0.10.0" 201 | }, 202 | { 203 | "metadata": { 204 | "id": "beb68b20-7c55-471c-9b63-3486f9423566", 205 | "publisherId": "mrmlnc.vscode-scss", 206 | "publisherDisplayName": "mrmlnc" 207 | }, 208 | "name": "vscode-scss", 209 | "publisher": "mrmlnc", 210 | "version": "0.6.2" 211 | }, 212 | { 213 | "metadata": { 214 | "id": "2061917f-f76a-458a-8da9-f162de22b97e", 215 | "publisherId": "redhat.vscode-yaml", 216 | "publisherDisplayName": "redhat" 217 | }, 218 | "name": "vscode-yaml", 219 | "publisher": "redhat", 220 | "version": "0.2.1" 221 | } 222 | ] 223 | -------------------------------------------------------------------------------- /.vscode/user.json: -------------------------------------------------------------------------------- 1 | { 2 | "telemetry.enableTelemetry": false, 3 | "telemetry.enableCrashReporter": false, 4 | "gitlens.blame.highlight.enabled": false, 5 | "gitlens.advanced.maxListItems": 0, 6 | "gitlens.defaultGravatarsStyle": "identicon", 7 | "gitlens.heatmap.ageThreshold": "30", 8 | "gitlens.insiders": true, 9 | "gitlens.liveshare.allowGuestAccess": false, 10 | "gitlens.showWhatsNewAfterUpgrades": false, 11 | "gitlens.statusBar.reduceFlicker": true, 12 | "gitlens.views.defaultItemLimit": 0, 13 | "gitlens.views.repositories.files.layout": "list", 14 | "gitlens.settings.mode": "advanced", 15 | "gitlens.keymap": "alternate", 16 | "gitlens.currentLine.enabled": true, 17 | "gitlens.codeLens.authors.enabled": false, 18 | "gitlens.views.fileHistory.enabled": true, 19 | "gitlens.views.lineHistory.enabled": true, 20 | "gitlens.advanced.telemetry.enabled": false, 21 | "gitlens.codeLens.enabled": true, 22 | "gitlens.codeLens.recentChange.enabled": true, 23 | "gitlens.currentLine.scrollable": false, 24 | "gitlens.hovers.enabled": true, 25 | "git.autofetch": true, 26 | "git.enableCommitSigning": true, 27 | "git.promptToSaveFilesBeforeCommit": true, 28 | "git.confirmSync": true, 29 | "merge-conflict.autoNavigateNextConflict.enabled": true, 30 | "merge-conflict.codeLens.enabled": true, 31 | "merge-conflict.decorators.enabled": true, 32 | "workbench.settings.enableNaturalLanguageSearch": false, 33 | "workbench.statusBar.feedback.visible": false, 34 | "workbench.activityBar.visible": true, 35 | "workbench.startupEditor": "none", 36 | "workbench.sideBar.location": "right", 37 | "workbench.iconTheme": "vscode-great-icons", 38 | "workbench.colorTheme": "Popping and Locking Black Theme", 39 | "zenMode.fullScreen": false, 40 | "search.usePCRE2": true, 41 | "search.showLineNumbers": true, 42 | "diffEditor.ignoreTrimWhitespace": false, 43 | "problems.decorations.enabled": false, 44 | "problems.autoReveal": false, 45 | "extensions.showRecommendationsOnlyOnDemand": true, 46 | "terminal.integrated.fontFamily": "Hack", 47 | "terminal.integrated.rendererType": "dom", 48 | "window.newWindowDimensions": "fullscreen", 49 | "update.showReleaseNotes": false, 50 | "update.enableWindowsBackgroundUpdates": false, 51 | "explorer.openEditors.visible": 0, 52 | "explorer.confirmDragAndDrop": true, 53 | "explorer.autoReveal": false, 54 | "editor.accessibilitySupport": "off", 55 | "editor.occurrencesHighlight": false, 56 | "editor.minimap.enabled": true, 57 | "editor.codeLens": true, 58 | "editor.renderControlCharacters": false, 59 | "editor.renderIndentGuides": false, 60 | "editor.renderLineHighlight": "none", 61 | "editor.matchBrackets": true, 62 | "editor.renderWhitespace": "all", 63 | "editor.emptySelectionClipboard": false, 64 | "editor.wordSeparators": "`~!@#%^&*()=+[{]}\\|;:'\",.<>/?", 65 | "editor.quickSuggestionsDelay": 0, 66 | "editor.formatOnPaste": false, 67 | "editor.formatOnSave": false, 68 | "editor.tabSize": 2, 69 | "editor.insertSpaces": false, 70 | "editor.detectIndentation": false, 71 | "editor.wordWrap": "on", 72 | "editor.wordWrapColumn": 80, 73 | "editor.scrollBeyondLastLine": false, 74 | "editor.fontLigatures": true, 75 | "editor.fontFamily": "Fira Code", 76 | "editor.codeActionsOnSaveTimeout": 7000, 77 | "editor.formatOnSaveTimeout": 7000, 78 | "editor.dragAndDrop": false, 79 | "editor.folding": false, 80 | "editor.showFoldingControls": "always", 81 | "editor.tabCompletion": "on", 82 | "editor.formatOnType": true, 83 | "files.insertFinalNewline": true, 84 | "files.trimTrailingWhitespace": true, 85 | "files.trimFinalNewlines": true, 86 | "files.eol": "\n", 87 | "files.maxMemoryForLargeFilesMB": 4096, 88 | "html.autoClosingTags": false, 89 | "html.format.endWithNewline": true, 90 | "html.format.indentInnerHtml": false, 91 | "html.format.extraLiners": "", 92 | "html.format.wrapLineLength": 80, 93 | "html.format.indentHandlebars": true, 94 | "docthis.inferTypesFromNames": true, 95 | "eslint.enable": false, 96 | "scss.showErrors": true, 97 | "scss.scanImportedFilesDepth": 500, 98 | "scss.scannerDepth": 100, 99 | "bracket-pair-colorizer-2.colors": [ 100 | "#cc241d", 101 | "#b16286", 102 | "#458588", 103 | "#689d6a", 104 | "#98971a", 105 | "#d79921" 106 | ], 107 | "bracket-pair-colorizer-2.forceIterationColorCycle": true, 108 | "javascript.updateImportsOnFileMove.enabled": "always", 109 | "javascript.format.enable": false, 110 | "javascript.autoClosingTags": false, 111 | "javascript.suggestionActions.enabled": false, 112 | "javascript.implicitProjectConfig.checkJs": true, 113 | "javascript.implicitProjectConfig.experimentalDecorators": true, 114 | "javascript.preferences.quoteStyle": "single", 115 | "javascript.referencesCodeLens.enabled": true, 116 | "javascript.suggest.completeFunctionCalls": true, 117 | "typescript.format.enable": false, 118 | "typescript.updateImportsOnFileMove.enabled": "always", 119 | "typescript.suggest.enabled": false, 120 | "typescript.surveys.enabled": false, 121 | "typescript.tsc.autoDetect": "off", 122 | "typescript.validate.enable": false, 123 | "typescript.disableAutomaticTypeAcquisition": true, 124 | "typescript.preferences.quoteStyle": "single", 125 | "typescript.referencesCodeLens.enabled": true, 126 | "docker.truncateLongRegistryPaths": true, 127 | "grunt.autoDetect": "off", 128 | "jake.autoDetect": "off", 129 | "npm.enableScriptExplorer": true, 130 | "npm-intellisense.packageSubfoldersIntellisense": true, 131 | "npm-intellisense.scanDevDependencies": true, 132 | "npm-intellisense.importLinebreak": ";\n", 133 | "npm.packageManager": "yarn", 134 | "path-intellisense.showHiddenFiles": true, 135 | "prettier.requireConfig": true, 136 | "prettier.disableLanguages": [], 137 | "prettier.useTabs": true, 138 | "prettier.jsxBracketSameLine": true, 139 | "prettier.trailingComma": "all", 140 | "prettier.jsxSingleQuote": true, 141 | "prettier.singleQuote": true, 142 | "prettier.htmlWhitespaceSensitivity": "strict", 143 | "yaml.format.enable": true, 144 | "sync.gist": "", 145 | "sync.quietSync": false, 146 | "sync.askGistName": true, 147 | "sync.removeExtensions": false, 148 | "sync.autoDownload": false, 149 | "sync.syncExtensions": true, 150 | "sync.autoUpload": true, 151 | "sync.forceDownload": false, 152 | "namespaceResolver.sortNatural": true, 153 | "javascript.format.insertSpaceAfterCommaDelimiter": false, 154 | "javascript.format.insertSpaceAfterKeywordsInControlFlowStatements": false, 155 | "javascript.format.insertSpaceAfterFunctionKeywordForAnonymousFunctions": false, 156 | "javascript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces": false, 157 | "javascript.format.insertSpaceAfterSemicolonInForStatements": false, 158 | "javascript.format.insertSpaceBeforeAndAfterBinaryOperators": false, 159 | "typescript.autoClosingTags": false, 160 | "typescript.format.insertSpaceAfterCommaDelimiter": false, 161 | "typescript.format.insertSpaceAfterFunctionKeywordForAnonymousFunctions": false, 162 | "typescript.format.insertSpaceAfterKeywordsInControlFlowStatements": false, 163 | "javascript.validate.enable": false, 164 | "typescript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces": false, 165 | "typescript.format.insertSpaceAfterSemicolonInForStatements": false, 166 | "typescript.format.insertSpaceBeforeAndAfterBinaryOperators": false, 167 | "typescript.reportStyleChecksAsWarnings": false, 168 | "typescript.suggest.completeFunctionCalls": true, 169 | "bracket-pair-colorizer-2.highlightActiveScope": true, 170 | "terminal.explorerKind": "external", 171 | "workbench.commandPalette.history": 200, 172 | "workbench.commandPalette.preserveInput": true, 173 | "workbench.enableExperiments": false, 174 | "workbench.list.openMode": "doubleClick", 175 | "workbench.quickOpen.closeOnFocusLost": false, 176 | "breadcrumbs.enabled": true 177 | } 178 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "scripts": {}, 4 | "dependencies": {}, 5 | "devDependencies": { 6 | "@babel/core": "^7.3.0", 7 | "@babel/helper-module-imports": "^7.0.0", 8 | "@babel/plugin-proposal-class-properties": "^7.3.0", 9 | "@babel/plugin-proposal-object-rest-spread": "^7.3.0", 10 | "@babel/preset-env": "^7.3.0", 11 | "autoprefixer": "^9.4.0", 12 | "babel-eslint": "^10.0.1", 13 | "babel-loader": "^8.0.5", 14 | "babel-preset-minify": "^0.5.0", 15 | "eslint": "^5.14.0", 16 | "eslint-config-airbnb-base": "^13.1.0", 17 | "eslint-config-prettier": "^4.0.0", 18 | "eslint-plugin-import": "^2.16.0", 19 | "eslint-plugin-prettier": "^3.0.0", 20 | "eslint-plugin-vue": "5.2.0", 21 | "node-sass": "^4.11.0", 22 | "prettier": "^1.16.0", 23 | "prettier-eslint": "^8.8.2", 24 | "prettier-stylelint": "^0.4.2", 25 | "stylelint": "^9.10.0", 26 | "stylelint-config-wordpress": "^13.1.0", 27 | "stylelint-order": "^2.0.0", 28 | "webpack": "4.29.3", 29 | "webpack-cli": "^3.2.1", 30 | "webpack-merge": "^4.2.1" 31 | }, 32 | "babel": { 33 | "plugins": [ 34 | "@babel/plugin-proposal-object-rest-spread", 35 | "@babel/plugin-proposal-class-properties", 36 | "@babel/plugin-syntax-dynamic-import", 37 | "@babel/transform-runtime", 38 | "lodash" 39 | ], 40 | "presets": [ 41 | [ 42 | "@babel/preset-env", 43 | { 44 | "useBuiltIns": "entry", 45 | "targets": "> 0.25%, not dead", 46 | "forceAllTransforms": true 47 | } 48 | ], 49 | [ 50 | "minify", 51 | { 52 | "evaluate": false, 53 | "keepFnName": true, 54 | "keepClassName": true, 55 | "mangle": false 56 | } 57 | ] 58 | ] 59 | }, 60 | "prettier": { 61 | "singleQuote": true, 62 | "printWidth": 80, 63 | "trailingComma": "none", 64 | "arrowParens": "avoid", 65 | "bracketSpacing": true, 66 | "endOfLine": "lf" 67 | }, 68 | "eslintConfig": { 69 | "root": true, 70 | "env": { 71 | "browser": true, 72 | "es6": true 73 | }, 74 | "globals": { 75 | "wp": "readable", 76 | "axios": "writeable", 77 | "$": "writeable" 78 | }, 79 | "extends": [ 80 | "airbnb-base", 81 | "plugin:vue/recommended", 82 | "prettier", 83 | "prettier/vue" 84 | ], 85 | "plugins": [ 86 | "prettier", 87 | "vue" 88 | ], 89 | "parserOptions": { 90 | "parser": "babel-eslint", 91 | "sourceType": "module" 92 | }, 93 | "settings": { 94 | "import/resolver": { 95 | "webpack": { 96 | "config": { 97 | "resolve": { 98 | "modules": [ 99 | "node_modules", 100 | "plugins/yourplugin/src" 101 | ], 102 | "extensions": [ 103 | ".js", 104 | ".vue" 105 | ] 106 | } 107 | } 108 | } 109 | } 110 | }, 111 | "rules": { 112 | "vue/no-v-html": "off", 113 | "vue/component-name-in-template-casing": [ 114 | "error", 115 | "kebab-case", 116 | { 117 | "ignores": [] 118 | } 119 | ], 120 | "no-useless-escape": "off", 121 | "no-use-before-define": [ 122 | 2, 123 | { 124 | "functions": false 125 | } 126 | ], 127 | "prefer-const": 1, 128 | "complexity": [ 129 | 1, 130 | 22 131 | ] 132 | } 133 | }, 134 | "eslintIgnore": [], 135 | "stylelint": { 136 | "extends": [ 137 | "stylelint-config-wordpress/scss", 138 | "./node_modules/prettier-stylelint/config.js" 139 | ], 140 | "plugins": "stylelint-order", 141 | "ignoreFiles": [ 142 | " /**/*.vue" 143 | ], 144 | "rules": { 145 | "max-line-length": 255, 146 | "function-url-quotes": "always", 147 | "function-name-case": null, 148 | "at-rule-no-unknown": null, 149 | "string-quotes": null, 150 | "no-descending-specificity": null, 151 | "declaration-block-no-duplicate-properties": [ 152 | true, 153 | { 154 | "ignore": [ 155 | "consecutive-duplicates-with-different-values" 156 | ] 157 | } 158 | ], 159 | "order/order": [ 160 | "at-variables", 161 | "dollar-variables", 162 | "custom-properties", 163 | "declarations" 164 | ], 165 | "order/properties-order": [ 166 | "display", 167 | "visibility", 168 | "float", 169 | "clear", 170 | "overflow", 171 | "overflow-x", 172 | "overflow-y", 173 | "clip", 174 | "zoom", 175 | "flex-direction", 176 | "flex-order", 177 | "flex-pack", 178 | "flex-align", 179 | "position", 180 | "z-index", 181 | "top", 182 | "right", 183 | "bottom", 184 | "left", 185 | "box-sizing", 186 | "width", 187 | "min-width", 188 | "max-width", 189 | "height", 190 | "min-height", 191 | "max-height", 192 | "margin", 193 | "margin-top", 194 | "margin-right", 195 | "margin-bottom", 196 | "margin-left", 197 | "padding", 198 | "padding-top", 199 | "padding-right", 200 | "padding-bottom", 201 | "padding-left", 202 | "border", 203 | "border-width", 204 | "border-style", 205 | "border-color", 206 | "border-top", 207 | "border-top-width", 208 | "border-top-style", 209 | "border-top-color", 210 | "border-right", 211 | "border-right-width", 212 | "border-right-style", 213 | "border-right-color", 214 | "border-bottom", 215 | "border-bottom-width", 216 | "border-bottom-style", 217 | "border-bottom-color", 218 | "border-left", 219 | "border-left-width", 220 | "border-left-style", 221 | "border-left-color", 222 | "border-radius", 223 | "border-top-left-radius", 224 | "border-top-right-radius", 225 | "border-bottom-right-radius", 226 | "border-bottom-left-radius", 227 | "border-image", 228 | "border-image-source", 229 | "border-image-slice", 230 | "border-image-width", 231 | "border-image-outset", 232 | "border-image-repeat", 233 | "table-layout", 234 | "empty-cells", 235 | "caption-side", 236 | "border-spacing", 237 | "border-collapse", 238 | "outline", 239 | "outline-width", 240 | "outline-style", 241 | "outline-color", 242 | "outline-offset", 243 | "opacity", 244 | "color", 245 | "background", 246 | "background-color", 247 | "background-image", 248 | "background-repeat", 249 | "background-attachment", 250 | "background-position", 251 | "background-position-x", 252 | "background-position-y", 253 | "background-clip", 254 | "background-origin", 255 | "background-size", 256 | "box-decoration-break", 257 | "box-shadow", 258 | "text-shadow", 259 | "font", 260 | "font-family", 261 | "src", 262 | "font-size", 263 | "font-weight", 264 | "font-style", 265 | "font-variant", 266 | "font-size-adjust", 267 | "font-stretch", 268 | "font-effect", 269 | "font-emphasize", 270 | "font-emphasize-position", 271 | "font-emphasize-style", 272 | "font-smooth", 273 | "line-height", 274 | "text-align", 275 | "text-align-last", 276 | "vertical-align", 277 | "white-space", 278 | "text-decoration", 279 | "text-emphasis", 280 | "text-emphasis-color", 281 | "text-emphasis-style", 282 | "text-emphasis-position", 283 | "text-indent", 284 | "text-justify", 285 | "letter-spacing", 286 | "word-spacing", 287 | "text-outline", 288 | "text-transform", 289 | "text-wrap", 290 | "text-overflow", 291 | "text-overflow-ellipsis", 292 | "text-overflow-mode", 293 | "word-wrap", 294 | "word-break", 295 | "tab-size", 296 | "hyphens", 297 | "list-style", 298 | "list-style-position", 299 | "list-style-type", 300 | "list-style-image", 301 | "content", 302 | "quotes", 303 | "counter-reset", 304 | "counter-increment", 305 | "resize", 306 | "cursor", 307 | "user-select", 308 | "nav-index", 309 | "nav-up", 310 | "nav-right", 311 | "nav-down", 312 | "nav-left", 313 | "transition", 314 | "transition-delay", 315 | "transition-timing-function", 316 | "transition-duration", 317 | "transition-property", 318 | "transform", 319 | "transform-origin", 320 | "animation", 321 | "animation-name", 322 | "animation-duration", 323 | "animation-play-state", 324 | "animation-timing-function", 325 | "animation-delay", 326 | "animation-iteration-count", 327 | "animation-direction", 328 | "backface-visibility", 329 | "text-rendering", 330 | "pointer-events" 331 | ] 332 | } 333 | } 334 | } 335 | -------------------------------------------------------------------------------- /.stylelintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: [ 3 | 'stylelint-config-wordpress/scss', 4 | './node_modules/prettier-stylelint/config.js' 5 | ], 6 | plugins: 'stylelint-order', 7 | ignoreFiles: ['/**/*.vue'], 8 | rules: { 9 | 'max-line-length': 255, 10 | 'function-url-quotes': 'always', 11 | 'function-name-case': null, 12 | 'at-rule-no-unknown': null, 13 | 'string-quotes': null, 14 | 'no-descending-specificity': null, 15 | 'declaration-block-no-duplicate-properties': [ 16 | true, 17 | { 18 | ignore: ['consecutive-duplicates-with-different-values'] 19 | } 20 | ], 21 | 'order/order': [ 22 | 'at-variables', 23 | 'dollar-variables', 24 | 'custom-properties', 25 | 'declarations' 26 | ], 27 | 'order/properties-order': [ 28 | 'display', 29 | 'visibility', 30 | 'float', 31 | 'clear', 32 | 'overflow', 33 | 'overflow-x', 34 | 'overflow-y', 35 | '-ms-overflow-x', 36 | '-ms-overflow-y', 37 | 'clip', 38 | 'zoom', 39 | 'flex-direction', 40 | 'flex-order', 41 | 'flex-pack', 42 | 'flex-align', 43 | 44 | 'position', 45 | 'z-index', 46 | 'top', 47 | 'right', 48 | 'bottom', 49 | 'left', 50 | 51 | '-webkit-box-sizing', 52 | '-moz-box-sizing', 53 | 'box-sizing', 54 | 'width', 55 | 'min-width', 56 | 'max-width', 57 | 'height', 58 | 'min-height', 59 | 'max-height', 60 | 'margin', 61 | 'margin-top', 62 | 'margin-right', 63 | 'margin-bottom', 64 | 'margin-left', 65 | 'padding', 66 | 'padding-top', 67 | 'padding-right', 68 | 'padding-bottom', 69 | 'padding-left', 70 | 'border', 71 | 'border-width', 72 | 'border-style', 73 | 'border-color', 74 | 'border-top', 75 | 'border-top-width', 76 | 'border-top-style', 77 | 'border-top-color', 78 | 'border-right', 79 | 'border-right-width', 80 | 'border-right-style', 81 | 'border-right-color', 82 | 'border-bottom', 83 | 'border-bottom-width', 84 | 'border-bottom-style', 85 | 'border-bottom-color', 86 | 'border-left', 87 | 'border-left-width', 88 | 'border-left-style', 89 | 'border-left-color', 90 | '-webkit-border-radius', 91 | '-moz-border-radius', 92 | 'border-radius', 93 | '-webkit-border-top-left-radius', 94 | '-moz-border-radius-topleft', 95 | 'border-top-left-radius', 96 | '-webkit-border-top-right-radius', 97 | '-moz-border-radius-topright', 98 | 'border-top-right-radius', 99 | '-webkit-border-bottom-right-radius', 100 | '-moz-border-radius-bottomright', 101 | 'border-bottom-right-radius', 102 | '-webkit-border-bottom-left-radius', 103 | '-moz-border-radius-bottomleft', 104 | 'border-bottom-left-radius', 105 | '-webkit-border-image', 106 | '-moz-border-image', 107 | '-o-border-image', 108 | 'border-image', 109 | '-webkit-border-image-source', 110 | '-moz-border-image-source', 111 | '-o-border-image-source', 112 | 'border-image-source', 113 | '-webkit-border-image-slice', 114 | '-moz-border-image-slice', 115 | '-o-border-image-slice', 116 | 'border-image-slice', 117 | '-webkit-border-image-width', 118 | '-moz-border-image-width', 119 | '-o-border-image-width', 120 | 'border-image-width', 121 | '-webkit-border-image-outset', 122 | '-moz-border-image-outset', 123 | '-o-border-image-outset', 124 | 'border-image-outset', 125 | '-webkit-border-image-repeat', 126 | '-moz-border-image-repeat', 127 | '-o-border-image-repeat', 128 | 'border-image-repeat', 129 | 'table-layout', 130 | 'empty-cells', 131 | 'caption-side', 132 | 'border-spacing', 133 | 'border-collapse', 134 | 135 | 'outline', 136 | 'outline-width', 137 | 'outline-style', 138 | 'outline-color', 139 | 'outline-offset', 140 | 'opacity', 141 | 'filter:progid:DXImageTransform.Microsoft.Alpha(Opacity', 142 | "-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha", 143 | '-ms-interpolation-mode', 144 | 'color', 145 | 'background', 146 | 'filter:progid:DXImageTransform.Microsoft.AlphaImageLoader', 147 | 'background-color', 148 | 'background-image', 149 | 'background-repeat', 150 | 'background-attachment', 151 | 'background-position', 152 | 'background-position-x', 153 | '-ms-background-position-x', 154 | 'background-position-y', 155 | '-ms-background-position-y', 156 | '-webkit-background-clip', 157 | '-moz-background-clip', 158 | 'background-clip', 159 | 'background-origin', 160 | '-webkit-background-size', 161 | '-moz-background-size', 162 | '-o-background-size', 163 | 'background-size', 164 | 'box-decoration-break', 165 | '-webkit-box-shadow', 166 | '-moz-box-shadow', 167 | 'box-shadow', 168 | 'filter:progid:DXImageTransform.Microsoft.gradient', 169 | "-ms-filter:\\'progid:DXImageTransform.Microsoft.gradient", 170 | 'text-shadow', 171 | 'font', 172 | 'font-family', 173 | 'src', 174 | 'font-size', 175 | 'font-weight', 176 | 'font-style', 177 | 'font-variant', 178 | 'font-size-adjust', 179 | 'font-stretch', 180 | 'font-effect', 181 | 'font-emphasize', 182 | 'font-emphasize-position', 183 | 'font-emphasize-style', 184 | '-webkit-font-smoothing', 185 | '-moz-osx-font-smoothing', 186 | 'font-smooth', 187 | 'line-height', 188 | 'text-align', 189 | '-webkit-text-align-last', 190 | '-moz-text-align-last', 191 | '-ms-text-align-last', 192 | 'text-align-last', 193 | 'vertical-align', 194 | 'white-space', 195 | 'text-decoration', 196 | 'text-emphasis', 197 | 'text-emphasis-color', 198 | 'text-emphasis-style', 199 | 'text-emphasis-position', 200 | 'text-indent', 201 | '-ms-text-justify', 202 | 'text-justify', 203 | 'letter-spacing', 204 | 'word-spacing', 205 | '-ms-writing-mode', 206 | 'text-outline', 207 | 'text-transform', 208 | 'text-wrap', 209 | 'text-overflow', 210 | '-ms-text-overflow', 211 | 'text-overflow-ellipsis', 212 | 'text-overflow-mode', 213 | '-ms-word-wrap', 214 | 'word-wrap', 215 | 'word-break', 216 | '-ms-word-break', 217 | '-moz-tab-size', 218 | '-o-tab-size', 219 | 'tab-size', 220 | '-webkit-hyphens', 221 | '-moz-hyphens', 222 | 'hyphens', 223 | 224 | 'list-style', 225 | 'list-style-position', 226 | 'list-style-type', 227 | 'list-style-image', 228 | 'content', 229 | 'quotes', 230 | 'counter-reset', 231 | 'counter-increment', 232 | 'resize', 233 | 'cursor', 234 | '-webkit-user-select', 235 | '-moz-user-select', 236 | '-ms-user-select', 237 | 'user-select', 238 | 'nav-index', 239 | 'nav-up', 240 | 'nav-right', 241 | 'nav-down', 242 | 'nav-left', 243 | '-webkit-transition', 244 | '-moz-transition', 245 | '-ms-transition', 246 | '-o-transition', 247 | 'transition', 248 | '-webkit-transition-delay', 249 | '-moz-transition-delay', 250 | '-ms-transition-delay', 251 | '-o-transition-delay', 252 | 'transition-delay', 253 | '-webkit-transition-timing-function', 254 | '-moz-transition-timing-function', 255 | '-ms-transition-timing-function', 256 | '-o-transition-timing-function', 257 | 'transition-timing-function', 258 | '-webkit-transition-duration', 259 | '-moz-transition-duration', 260 | '-ms-transition-duration', 261 | '-o-transition-duration', 262 | 'transition-duration', 263 | '-webkit-transition-property', 264 | '-moz-transition-property', 265 | '-ms-transition-property', 266 | '-o-transition-property', 267 | 'transition-property', 268 | '-webkit-transform', 269 | '-moz-transform', 270 | '-ms-transform', 271 | '-o-transform', 272 | 'transform', 273 | '-webkit-transform-origin', 274 | '-moz-transform-origin', 275 | '-ms-transform-origin', 276 | '-o-transform-origin', 277 | 'transform-origin', 278 | '-webkit-animation', 279 | '-moz-animation', 280 | '-ms-animation', 281 | '-o-animation', 282 | 'animation', 283 | '-webkit-animation-name', 284 | '-moz-animation-name', 285 | '-ms-animation-name', 286 | '-o-animation-name', 287 | 'animation-name', 288 | '-webkit-animation-duration', 289 | '-moz-animation-duration', 290 | '-ms-animation-duration', 291 | '-o-animation-duration', 292 | 'animation-duration', 293 | '-webkit-animation-play-state', 294 | '-moz-animation-play-state', 295 | '-ms-animation-play-state', 296 | '-o-animation-play-state', 297 | 'animation-play-state', 298 | '-webkit-animation-timing-function', 299 | '-moz-animation-timing-function', 300 | '-ms-animation-timing-function', 301 | '-o-animation-timing-function', 302 | 'animation-timing-function', 303 | '-webkit-animation-delay', 304 | '-moz-animation-delay', 305 | '-ms-animation-delay', 306 | '-o-animation-delay', 307 | 'animation-delay', 308 | '-webkit-animation-iteration-count', 309 | '-moz-animation-iteration-count', 310 | '-ms-animation-iteration-count', 311 | '-o-animation-iteration-count', 312 | 'animation-iteration-count', 313 | '-webkit-animation-direction', 314 | '-moz-animation-direction', 315 | '-ms-animation-direction', 316 | '-o-animation-direction', 317 | 'animation-direction', 318 | '-webkit-backface-visibility', 319 | '-moz-backface-visibility', 320 | 'backface-visibility', 321 | 'text-rendering', 322 | 'pointer-events' 323 | ] 324 | } 325 | }; 326 | --------------------------------------------------------------------------------