From aa2b096fa33fc59649c55a684852d3ad54d13682 Mon Sep 17 00:00:00 2001 From: "yordan.ramchev" Date: Wed, 6 Mar 2024 16:30:30 +0200 Subject: [PATCH 01/14] feat: add vite plugin VueDevtools --- index.ts | 21 +- pnpm-lock.yaml | 307 ++++++++++++++++++ scripts/snapshot.mjs | 3 +- template/config/vue-devtools/package.json | 5 + .../vue-devtools/vite.config.js.data.mjs | 12 + 5 files changed, 345 insertions(+), 3 deletions(-) create mode 100644 template/config/vue-devtools/package.json create mode 100644 template/config/vue-devtools/vite.config.js.data.mjs diff --git a/index.ts b/index.ts index 16bf9e14..0aeb2e39 100755 --- a/index.ts +++ b/index.ts @@ -83,6 +83,7 @@ async function init() { // --playwright // --eslint // --eslint-with-prettier (only support prettier through eslint for simplicity) + // --vue-devtools // --force (for force overwriting) const args = process.argv.slice(2) @@ -116,7 +117,8 @@ async function init() { argv.cypress ?? argv.nightwatch ?? argv.playwright ?? - argv.eslint + argv.eslint ?? + argv['vue-devtools'] ) === 'boolean' let targetDir = args[0] @@ -138,6 +140,7 @@ async function init() { needsE2eTesting?: false | 'cypress' | 'nightwatch' | 'playwright' needsEslint?: boolean needsPrettier?: boolean + needsVueDevtools?: boolean } = {} try { @@ -154,6 +157,7 @@ async function init() { // - Add Playwright for end-to-end testing? // - Add ESLint for code quality? // - Add Prettier for code formatting? + // - Add VueDevtools extension for debugging? (experimental) result = await prompts( [ { @@ -285,6 +289,14 @@ async function init() { initial: false, active: language.defaultToggleOptions.active, inactive: language.defaultToggleOptions.inactive + }, + { + name: 'needsVueDevtools', + type: () => (isFeatureFlagsUsed ? null : 'toggle'), + message: language.needsVueDevtools.message, + initial: false, + active: language.defaultToggleOptions.active, + inactive: language.defaultToggleOptions.inactive } ], { @@ -310,7 +322,8 @@ async function init() { needsPinia = argv.pinia, needsVitest = argv.vitest || argv.tests, needsEslint = argv.eslint || argv['eslint-with-prettier'], - needsPrettier = argv['eslint-with-prettier'] + needsPrettier = argv['eslint-with-prettier'], + needsVueDevtools = argv['vue-devtools'] } = result const { needsE2eTesting } = result @@ -453,6 +466,10 @@ async function init() { if (needsPrettier) { render('config/prettier') } + + if (needsVueDevtools) { + render('config/vue-devtools') + } // Render code template. // prettier-ignore const codeTemplate = diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e48c03ab..8b5d6769 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -194,6 +194,12 @@ importers: specifier: ^1.3.1 version: 1.3.1(@types/node@20.11.24)(jsdom@24.0.0) + template/config/vue-devtools: + devDependencies: + vite-plugin-vue-devtools: + specifier: ^7.0.16 + version: 7.0.16(vite@5.1.4)(vue@3.4.21) + template/tsconfig/base: devDependencies: '@tsconfig/node20': @@ -219,6 +225,10 @@ packages: '@jridgewell/trace-mapping': 0.3.20 dev: true + /@antfu/utils@0.7.7: + resolution: {integrity: sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==} + dev: true + /@asamuzakjp/dom-selector@2.0.1: resolution: {integrity: sha512-QJAJffmCiymkv6YyQ7voyQb5caCth6jzZsQncYCpHXrJ7RqdYG5y43+is8mnFcYubdOkr7cn1+na9BdFMxqw7w==} dependencies: @@ -319,6 +329,24 @@ packages: semver: 6.3.1 dev: true + /@babel/helper-create-class-features-plugin@7.24.0(@babel/core@7.23.3): + resolution: {integrity: sha512-QAH+vfvts51BCsNZ2PhY6HAggnlS6omLLFTsIpeqZk/MmJ6cW7tgz5yRv0fMJThcr6FmbMrENh1RgrWPTYA76g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.3) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + dev: true + /@babel/helper-environment-visitor@7.22.20: resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} @@ -379,6 +407,11 @@ packages: engines: {node: '>=6.9.0'} dev: true + /@babel/helper-plugin-utils@7.24.0: + resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.3): resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} engines: {node: '>=6.9.0'} @@ -452,6 +485,47 @@ packages: dependencies: '@babel/types': 7.23.3 + /@babel/plugin-proposal-decorators@7.24.0(@babel/core@7.23.3): + resolution: {integrity: sha512-LiT1RqZWeij7X+wGxCoYh3/3b8nVOX6/7BZ9wiQgAIyjoeQWdROaodJCgT+dwtbjHaz0r7bEbHJzjSbVfcOyjQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.23.3) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-decorators': 7.24.0(@babel/core@7.23.3) + dev: true + + /@babel/plugin-syntax-decorators@7.24.0(@babel/core@7.23.3): + resolution: {integrity: sha512-MXW3pQCu9gUiVGzqkGqsgiINDVYXoAnrY8FYF/rmb+OfufNF0zHMpHPN4ulRrinxYT8Vk/aZJxYqOKsDECjKAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.3): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.23.3): resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} engines: {node: '>=6.9.0'} @@ -1162,6 +1236,24 @@ packages: playwright: 1.42.1 dev: true + /@polka/url@1.0.0-next.24: + resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} + dev: true + + /@rollup/pluginutils@5.1.0: + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: true + /@rollup/rollup-android-arm-eabi@4.12.0: resolution: {integrity: sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==} cpu: [arm] @@ -1626,6 +1718,39 @@ packages: resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==} dev: false + /@vue/devtools-core@7.0.16(vite@5.1.4)(vue@3.4.21): + resolution: {integrity: sha512-GGHZSvQcVyBYzkBOOBwA+xKtG2DCA7InFxjbaTfUERRDPFWFOOBdf1xe1FtiZRkU+vHnF8NqKnz+78HpnzD02w==} + dependencies: + '@vue/devtools-kit': 7.0.16(vue@3.4.21) + '@vue/devtools-shared': 7.0.16 + mitt: 3.0.1 + nanoid: 3.3.7 + pathe: 1.1.2 + vite-hot-client: 0.2.3(vite@5.1.4) + transitivePeerDependencies: + - vite + - vue + dev: true + + /@vue/devtools-kit@7.0.16(vue@3.4.21): + resolution: {integrity: sha512-IA8SSGiZbNgOi4wLT3mRvd71Q9KE0KvMfGk6haa2GZ6bL2K/xMA8Fvvj3o1maspfUXrGcCXutaqbLqbGx/espQ==} + peerDependencies: + vue: ^3.0.0 + dependencies: + '@vue/devtools-shared': 7.0.16 + hookable: 5.5.3 + mitt: 3.0.1 + perfect-debounce: 1.0.0 + speakingurl: 14.0.1 + vue: 3.4.21(typescript@5.3.3) + dev: true + + /@vue/devtools-shared@7.0.16: + resolution: {integrity: sha512-Lew4FrGjDjmanaUWSueNE1Rre83k7jQpttc17MaoVw0eARWU5DgZ1F/g9GNUMZXVjbP9rwE+LL3gd9XfXCfkvA==} + dependencies: + rfdc: 1.3.1 + dev: true + /@vue/language-core@2.0.5(typescript@5.3.3): resolution: {integrity: sha512-knGXuQqhDSO7QJr8LFklsiWa23N2ikehkdVxtc9UKgnyqsnusughS2Tkg7VN8Hqed35X0B52Z+OGI5OrT/8uxQ==} peerDependencies: @@ -2152,6 +2277,13 @@ packages: engines: {node: '>=0.2.0'} dev: true + /bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + dependencies: + run-applescript: 7.0.0 + dev: true + /cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -2669,6 +2801,19 @@ packages: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true + /default-browser-id@5.0.0: + resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} + engines: {node: '>=18'} + dev: true + + /default-browser@5.2.1: + resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} + engines: {node: '>=18'} + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.0 + dev: true + /defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: @@ -2689,6 +2834,11 @@ packages: engines: {node: '>=8'} dev: true + /define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + dev: true + /define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} @@ -2840,6 +2990,10 @@ packages: hasBin: true dev: true + /error-stack-parser-es@0.1.1: + resolution: {integrity: sha512-g/9rfnvnagiNf+DRMHEVGuGuIBlCIMDFoTA616HaP2l9PlCjGjVhD98PNbVSJvmK4TttqT5mV5tInMhoFgi+aA==} + dev: true + /es-get-iterator@1.1.3: resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} dependencies: @@ -3688,6 +3842,10 @@ packages: hasBin: true dev: true + /hookable@5.5.3: + resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + dev: true + /html-encoding-sniffer@4.0.0: resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} engines: {node: '>=18'} @@ -3899,6 +4057,12 @@ packages: hasBin: true dev: true + /is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + dev: true + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -3928,6 +4092,14 @@ packages: is-extglob: 2.1.1 dev: true + /is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + dependencies: + is-docker: 3.0.0 + dev: true + /is-installed-globally@0.4.0: resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} engines: {node: '>=10'} @@ -4051,6 +4223,13 @@ packages: is-docker: 2.2.1 dev: true + /is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} + dependencies: + is-inside-container: 1.0.0 + dev: true + /is2@2.0.9: resolution: {integrity: sha512-rZkHeBn9Zzq52sd9IUIV3a5mfwBY+o2HePMh0wkGBM4z4qjvy2GwVxQ6nNXSfw6MmVP6gf1QIlWjiOavhM3x5g==} engines: {node: '>=v0.10.0'} @@ -4584,6 +4763,10 @@ packages: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true + /mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + dev: true + /mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true @@ -4634,6 +4817,11 @@ packages: yargs-unparser: 2.0.0 dev: true + /mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + dev: true + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true @@ -4884,6 +5072,16 @@ packages: mimic-fn: 4.0.0 dev: true + /open@10.0.4: + resolution: {integrity: sha512-oujJ/FFr7ra6/7gJuQ4ZJJ8Gf2VHM0J3J/W7IvH++zaqEzacWVxzK++NiVY5NLHTTj7u/jNH5H3Ei9biL31Lng==} + engines: {node: '>=18'} + dependencies: + default-browser: 5.2.1 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 3.1.0 + dev: true + /open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} @@ -5013,6 +5211,10 @@ packages: resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} dev: true + /pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + dev: true + /pathval@1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} dev: true @@ -5027,6 +5229,10 @@ packages: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} dev: true + /perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + dev: true + /performance-now@2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} dev: true @@ -5320,6 +5526,10 @@ packages: resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} dev: true + /rfdc@1.3.1: + resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==} + dev: true + /rimraf@2.7.1: resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} hasBin: true @@ -5369,6 +5579,11 @@ packages: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} dev: true + /run-applescript@7.0.0: + resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} + engines: {node: '>=18'} + dev: true + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: @@ -5502,6 +5717,15 @@ packages: supports-color: 7.2.0 dev: true + /sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.24 + mrmime: 2.0.0 + totalist: 3.0.1 + dev: true + /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} dev: true @@ -5580,6 +5804,11 @@ packages: dev: true optional: true + /speakingurl@14.0.1: + resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} + engines: {node: '>=0.10.0'} + dev: true + /split@0.3.3: resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} dependencies: @@ -5835,6 +6064,11 @@ packages: is-number: 7.0.0 dev: true + /totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + dev: true + /tough-cookie@4.1.3: resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} engines: {node: '>=6'} @@ -6009,6 +6243,14 @@ packages: extsprintf: 1.3.0 dev: true + /vite-hot-client@0.2.3(vite@5.1.4): + resolution: {integrity: sha512-rOGAV7rUlUHX89fP2p2v0A2WWvV3QMX2UYq0fRqsWSvFvev4atHWqjwGoKaZT1VTKyLGk533ecu3eyd0o59CAg==} + peerDependencies: + vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 + dependencies: + vite: 5.1.4(@types/node@20.11.24) + dev: true + /vite-node@1.3.1(@types/node@20.11.24): resolution: {integrity: sha512-azbRrqRxlWTJEVbzInZCTchx0X69M/XPTCz4H+TLvlTcR/xH/3hkRqhOakT41fMJCMzXTu4UvegkZiEoJAWvng==} engines: {node: ^18.0.0 || >=20.0.0} @@ -6030,6 +6272,31 @@ packages: - terser dev: true + /vite-plugin-inspect@0.8.3(vite@5.1.4): + resolution: {integrity: sha512-SBVzOIdP/kwe6hjkt7LSW4D0+REqqe58AumcnCfRNw4Kt3mbS9pEBkch+nupu2PBxv2tQi69EQHQ1ZA1vgB/Og==} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': '*' + vite: ^3.1.0 || ^4.0.0 || ^5.0.0-0 + peerDependenciesMeta: + '@nuxt/kit': + optional: true + dependencies: + '@antfu/utils': 0.7.7 + '@rollup/pluginutils': 5.1.0 + debug: 4.3.4(supports-color@8.1.1) + error-stack-parser-es: 0.1.1 + fs-extra: 11.2.0 + open: 10.0.4 + perfect-debounce: 1.0.0 + picocolors: 1.0.0 + sirv: 2.0.4 + vite: 5.1.4(@types/node@20.11.24) + transitivePeerDependencies: + - rollup + - supports-color + dev: true + /vite-plugin-nightwatch@0.4.6(vue@3.4.21): resolution: {integrity: sha512-7mxANgh3KA2c/xGJU35T8z1Xj9akWQ4FuyB1PN3nwinqxqYBAx44sW9Z87a2x6efj5TD4lU0Tbuvvgous6F1+Q==} dependencies: @@ -6048,6 +6315,46 @@ packages: - vue dev: true + /vite-plugin-vue-devtools@7.0.16(vite@5.1.4)(vue@3.4.21): + resolution: {integrity: sha512-M7TPQhTGlz33TdHkZRSwe4ZfA+aAsy3vlvnOqxVtPCj9aEtaqhgKgbQidImAMd6BgTgSwZ/ga/iHWhwABDrdNQ==} + engines: {node: '>=v14.21.3'} + peerDependencies: + vite: ^3.1.0 || ^4.0.0-0 || ^5.0.0-0 + dependencies: + '@vue/devtools-core': 7.0.16(vite@5.1.4)(vue@3.4.21) + '@vue/devtools-kit': 7.0.16(vue@3.4.21) + '@vue/devtools-shared': 7.0.16 + execa: 8.0.1 + sirv: 2.0.4 + vite: 5.1.4(@types/node@20.11.24) + vite-plugin-inspect: 0.8.3(vite@5.1.4) + vite-plugin-vue-inspector: 4.0.2(vite@5.1.4) + transitivePeerDependencies: + - '@nuxt/kit' + - rollup + - supports-color + - vue + dev: true + + /vite-plugin-vue-inspector@4.0.2(vite@5.1.4): + resolution: {integrity: sha512-KPvLEuafPG13T7JJuQbSm5PwSxKFnVS965+MP1we2xGw9BPkkc/+LPix5MMWenpKWqtjr0ws8THrR+KuoDC8hg==} + peerDependencies: + vite: ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/plugin-proposal-decorators': 7.24.0(@babel/core@7.23.3) + '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.3) + '@babel/plugin-transform-typescript': 7.23.3(@babel/core@7.23.3) + '@vue/babel-plugin-jsx': 1.1.5(@babel/core@7.23.3) + '@vue/compiler-dom': 3.4.21 + kolorist: 1.8.0 + magic-string: 0.30.7 + vite: 5.1.4(@types/node@20.11.24) + transitivePeerDependencies: + - supports-color + dev: true + /vite@4.5.2(@types/node@20.11.24): resolution: {integrity: sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==} engines: {node: ^14.18.0 || >=16.0.0} diff --git a/scripts/snapshot.mjs b/scripts/snapshot.mjs index 5e0224c2..259688e3 100644 --- a/scripts/snapshot.mjs +++ b/scripts/snapshot.mjs @@ -15,7 +15,8 @@ const featureFlags = [ 'vitest', 'cypress', 'playwright', - 'nightwatch' + 'nightwatch', + 'vue-devtools' ] const featureFlagsDenylist = [ ['cypress', 'playwright'], diff --git a/template/config/vue-devtools/package.json b/template/config/vue-devtools/package.json new file mode 100644 index 00000000..142011e3 --- /dev/null +++ b/template/config/vue-devtools/package.json @@ -0,0 +1,5 @@ +{ + "devDependencies": { + "vite-plugin-vue-devtools": "^7.0.16" + } +} diff --git a/template/config/vue-devtools/vite.config.js.data.mjs b/template/config/vue-devtools/vite.config.js.data.mjs new file mode 100644 index 00000000..9085c681 --- /dev/null +++ b/template/config/vue-devtools/vite.config.js.data.mjs @@ -0,0 +1,12 @@ +export default function getData({ oldData }) { + const vueDevtoolsPlugin = { + id: 'vite-plugin-vue-devtools', + importer: "import VueDevTools from 'vite-plugin-vue-devtools'", + initializer: 'VueDevTools()' + } + + return { + ...oldData, + plugins: [...oldData.plugins, vueDevtoolsPlugin] + } +} From 31dd2e69d47d8f94b34edb769da09325b11cccae Mon Sep 17 00:00:00 2001 From: "yordan.ramchev" Date: Wed, 6 Mar 2024 16:31:05 +0200 Subject: [PATCH 02/14] feat: init needsVueDevtools translations --- locales/en-US.json | 3 +++ locales/fr-FR.json | 3 +++ locales/tr-TR.json | 3 +++ locales/zh-Hans.json | 3 +++ locales/zh-Hant.json | 3 +++ utils/getLanguage.ts | 1 + 6 files changed, 16 insertions(+) diff --git a/locales/en-US.json b/locales/en-US.json index 6fcfbeb6..c275f756 100644 --- a/locales/en-US.json +++ b/locales/en-US.json @@ -50,6 +50,9 @@ "needsPrettier": { "message": "Add Prettier for code formatting?" }, + "needsVueDevtools": { + "message": "Add VueDevtools extension for debugging? (experimental)" + }, "errors": { "operationCancelled": "Operation cancelled" }, diff --git a/locales/fr-FR.json b/locales/fr-FR.json index 96d6be94..8844fd86 100644 --- a/locales/fr-FR.json +++ b/locales/fr-FR.json @@ -50,6 +50,9 @@ "needsPrettier": { "message": "Ajouter Prettier pour le formatage du code\u00a0?" }, + "needsVueDevtools": { + "message": "Add VueDevtools extension for debugging? (experimental)" + }, "errors": { "operationCancelled": "Operation annulée" }, diff --git a/locales/tr-TR.json b/locales/tr-TR.json index 3b97c8b8..2526d8bc 100644 --- a/locales/tr-TR.json +++ b/locales/tr-TR.json @@ -50,6 +50,9 @@ "needsPrettier": { "message": "Kod formatlama için Prettier eklensin mi?" }, + "needsVueDevtools": { + "message": "Add VueDevtools extension for debugging? (experimental)" + }, "errors": { "operationCancelled": "İşlem iptal edildi" }, diff --git a/locales/zh-Hans.json b/locales/zh-Hans.json index 1ef4acdc..0cbc2447 100644 --- a/locales/zh-Hans.json +++ b/locales/zh-Hans.json @@ -50,6 +50,9 @@ "needsPrettier": { "message": "是否引入 Prettier 用于代码格式化?" }, + "needsVueDevtools": { + "message": "Add VueDevtools extension for debugging? (experimental)" + }, "errors": { "operationCancelled": "操作取消" }, diff --git a/locales/zh-Hant.json b/locales/zh-Hant.json index e1901ed3..9cd63036 100644 --- a/locales/zh-Hant.json +++ b/locales/zh-Hant.json @@ -54,6 +54,9 @@ "needsPrettier": { "message": "是否引入 Prettier 用於程式碼格式化?" }, + "needsVueDevtools": { + "message": "Add VueDevtools extension for debugging? (experimental)" + }, "errors": { "operationCancelled": "操作取消" }, diff --git a/utils/getLanguage.ts b/utils/getLanguage.ts index 6b853c3b..8135381d 100644 --- a/utils/getLanguage.ts +++ b/utils/getLanguage.ts @@ -30,6 +30,7 @@ interface Language { needsE2eTesting: LanguageItem needsEslint: LanguageItem needsPrettier: LanguageItem + needsVueDevtools: LanguageItem errors: { operationCancelled: string } From 362acc0a764409e6e3db0c9694b5358cd07826ee Mon Sep 17 00:00:00 2001 From: "yordan.ramchev" Date: Wed, 6 Mar 2024 16:45:47 +0200 Subject: [PATCH 03/14] feat: add flag-for-vue-devtools --- .github/workflows/ci.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3a95bd45..fa737605 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -46,6 +46,7 @@ jobs: flag-for-router: ['', '--router'] flag-for-pinia: ['', '--pinia'] flag-for-vitest: ['', '--vitest'] + flag-for-vue-devtools: ['', '--vue-devtools'] # It's quite costly to install Cypress & Playwright even with cache. # Maybe we can split them into another job so that all the projects @@ -68,6 +69,7 @@ jobs: flag-for-pinia: '--pinia' flag-for-vitest: '--vitest' flag-for-e2e: '--cypress' + flag-for-vue-devtools: 'vue-devtools' - node-version: 18 os: macos-latest @@ -77,6 +79,7 @@ jobs: flag-for-pinia: '--pinia' flag-for-vitest: '--vitest' flag-for-e2e: '--cypress' + flag-for-vue-devtools: 'vue-devtools' - node-version: 20 os: ubuntu-latest @@ -86,6 +89,7 @@ jobs: flag-for-pinia: '--pinia' flag-for-vitest: '--vitest' flag-for-e2e: '--cypress' + flag-for-vue-devtools: 'vue-devtools' - node-version: 16 os: ubuntu-latest @@ -95,10 +99,11 @@ jobs: flag-for-pinia: '--pinia' flag-for-vitest: '--vitest' flag-for-e2e: '--cypress' + flag-for-vue-devtools: 'vue-devtools' runs-on: ${{ matrix.os }} continue-on-error: ${{ matrix.os == 'windows-latest' }} env: - FEATURE_FLAGS: ${{ matrix.flag-for-ts }} ${{ matrix.flag-for-jsx }} ${{ matrix.flag-for-router }} ${{ matrix.flag-for-pinia }} ${{ matrix.flag-for-vitest }} ${{ matrix.flag-for-e2e }} + FEATURE_FLAGS: ${{ matrix.flag-for-ts }} ${{ matrix.flag-for-jsx }} ${{ matrix.flag-for-router }} ${{ matrix.flag-for-pinia }} ${{ matrix.flag-for-vitest }} ${{ matrix.flag-for-e2e }} ${{ matrix.flag-for-vue-devtools }} # Sometimes the Linux runner can't verify Cypress in 30s CYPRESS_VERIFY_TIMEOUT: 60000 steps: From c5906f8e0a690ae1e45aeda80374db4369a47bcf Mon Sep 17 00:00:00 2001 From: "yordan.ramchev" Date: Wed, 6 Mar 2024 16:54:38 +0200 Subject: [PATCH 04/14] feat: add needsVueDevtools translation --- locales/fr-FR.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/fr-FR.json b/locales/fr-FR.json index 8844fd86..aead23e4 100644 --- a/locales/fr-FR.json +++ b/locales/fr-FR.json @@ -51,7 +51,7 @@ "message": "Ajouter Prettier pour le formatage du code\u00a0?" }, "needsVueDevtools": { - "message": "Add VueDevtools extension for debugging? (experimental)" + "message": "Ajouter l'extension Vue DevTools pour le débogage\u00a0? (expérimental)" }, "errors": { "operationCancelled": "Operation annulée" From c90a117d20673cceff0569cf9ffa8318c4dec2b8 Mon Sep 17 00:00:00 2001 From: "yordan.ramchev" Date: Wed, 6 Mar 2024 16:56:01 +0200 Subject: [PATCH 05/14] nit: rename VueDevtools to Vue Devtools --- index.ts | 2 +- locales/en-US.json | 2 +- locales/tr-TR.json | 2 +- locales/zh-Hans.json | 2 +- locales/zh-Hant.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/index.ts b/index.ts index 0aeb2e39..3b2cd937 100755 --- a/index.ts +++ b/index.ts @@ -157,7 +157,7 @@ async function init() { // - Add Playwright for end-to-end testing? // - Add ESLint for code quality? // - Add Prettier for code formatting? - // - Add VueDevtools extension for debugging? (experimental) + // - Add Vue Devtools extension for debugging? (experimental) result = await prompts( [ { diff --git a/locales/en-US.json b/locales/en-US.json index c275f756..e9d3135c 100644 --- a/locales/en-US.json +++ b/locales/en-US.json @@ -51,7 +51,7 @@ "message": "Add Prettier for code formatting?" }, "needsVueDevtools": { - "message": "Add VueDevtools extension for debugging? (experimental)" + "message": "Add Vue Devtools extension for debugging? (experimental)" }, "errors": { "operationCancelled": "Operation cancelled" diff --git a/locales/tr-TR.json b/locales/tr-TR.json index 2526d8bc..028ecce3 100644 --- a/locales/tr-TR.json +++ b/locales/tr-TR.json @@ -51,7 +51,7 @@ "message": "Kod formatlama için Prettier eklensin mi?" }, "needsVueDevtools": { - "message": "Add VueDevtools extension for debugging? (experimental)" + "message": "Add Vue Devtools extension for debugging? (experimental)" }, "errors": { "operationCancelled": "İşlem iptal edildi" diff --git a/locales/zh-Hans.json b/locales/zh-Hans.json index 0cbc2447..9a2a8565 100644 --- a/locales/zh-Hans.json +++ b/locales/zh-Hans.json @@ -51,7 +51,7 @@ "message": "是否引入 Prettier 用于代码格式化?" }, "needsVueDevtools": { - "message": "Add VueDevtools extension for debugging? (experimental)" + "message": "Add Vue Devtools extension for debugging? (experimental)" }, "errors": { "operationCancelled": "操作取消" diff --git a/locales/zh-Hant.json b/locales/zh-Hant.json index 9cd63036..a86755b6 100644 --- a/locales/zh-Hant.json +++ b/locales/zh-Hant.json @@ -55,7 +55,7 @@ "message": "是否引入 Prettier 用於程式碼格式化?" }, "needsVueDevtools": { - "message": "Add VueDevtools extension for debugging? (experimental)" + "message": "Add Vue Devtools extension for debugging? (experimental)" }, "errors": { "operationCancelled": "操作取消" From 587a52a92555d5cc46a7020082be8206e8014618 Mon Sep 17 00:00:00 2001 From: "yordan.ramchev" Date: Wed, 6 Mar 2024 17:05:57 +0200 Subject: [PATCH 06/14] nit: update Devtools to DevTools --- index.ts | 2 +- locales/en-US.json | 2 +- locales/tr-TR.json | 2 +- locales/zh-Hans.json | 2 +- locales/zh-Hant.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/index.ts b/index.ts index 3b2cd937..a14398d0 100755 --- a/index.ts +++ b/index.ts @@ -157,7 +157,7 @@ async function init() { // - Add Playwright for end-to-end testing? // - Add ESLint for code quality? // - Add Prettier for code formatting? - // - Add Vue Devtools extension for debugging? (experimental) + // - Add Vue DevTools extension for debugging? (experimental) result = await prompts( [ { diff --git a/locales/en-US.json b/locales/en-US.json index e9d3135c..d29388f1 100644 --- a/locales/en-US.json +++ b/locales/en-US.json @@ -51,7 +51,7 @@ "message": "Add Prettier for code formatting?" }, "needsVueDevtools": { - "message": "Add Vue Devtools extension for debugging? (experimental)" + "message": "Add Vue DevTools extension for debugging? (experimental)" }, "errors": { "operationCancelled": "Operation cancelled" diff --git a/locales/tr-TR.json b/locales/tr-TR.json index 028ecce3..2c3383cf 100644 --- a/locales/tr-TR.json +++ b/locales/tr-TR.json @@ -51,7 +51,7 @@ "message": "Kod formatlama için Prettier eklensin mi?" }, "needsVueDevtools": { - "message": "Add Vue Devtools extension for debugging? (experimental)" + "message": "Add Vue DevTools extension for debugging? (experimental)" }, "errors": { "operationCancelled": "İşlem iptal edildi" diff --git a/locales/zh-Hans.json b/locales/zh-Hans.json index 9a2a8565..651c60fe 100644 --- a/locales/zh-Hans.json +++ b/locales/zh-Hans.json @@ -51,7 +51,7 @@ "message": "是否引入 Prettier 用于代码格式化?" }, "needsVueDevtools": { - "message": "Add Vue Devtools extension for debugging? (experimental)" + "message": "Add Vue DevTools extension for debugging? (experimental)" }, "errors": { "operationCancelled": "操作取消" diff --git a/locales/zh-Hant.json b/locales/zh-Hant.json index a86755b6..a65e4598 100644 --- a/locales/zh-Hant.json +++ b/locales/zh-Hant.json @@ -55,7 +55,7 @@ "message": "是否引入 Prettier 用於程式碼格式化?" }, "needsVueDevtools": { - "message": "Add Vue Devtools extension for debugging? (experimental)" + "message": "Add Vue DevTools extension for debugging? (experimental)" }, "errors": { "operationCancelled": "操作取消" From 0c3efe377ba677fdecd57fa80f39c335ff3175e6 Mon Sep 17 00:00:00 2001 From: "yordan.ramchev" Date: Wed, 6 Mar 2024 17:08:31 +0200 Subject: [PATCH 07/14] ref: remove flag-for-vue-devtools from the matrix --- .github/workflows/ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fa737605..ee036477 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -46,7 +46,6 @@ jobs: flag-for-router: ['', '--router'] flag-for-pinia: ['', '--pinia'] flag-for-vitest: ['', '--vitest'] - flag-for-vue-devtools: ['', '--vue-devtools'] # It's quite costly to install Cypress & Playwright even with cache. # Maybe we can split them into another job so that all the projects @@ -103,7 +102,7 @@ jobs: runs-on: ${{ matrix.os }} continue-on-error: ${{ matrix.os == 'windows-latest' }} env: - FEATURE_FLAGS: ${{ matrix.flag-for-ts }} ${{ matrix.flag-for-jsx }} ${{ matrix.flag-for-router }} ${{ matrix.flag-for-pinia }} ${{ matrix.flag-for-vitest }} ${{ matrix.flag-for-e2e }} ${{ matrix.flag-for-vue-devtools }} + FEATURE_FLAGS: ${{ matrix.flag-for-ts }} ${{ matrix.flag-for-jsx }} ${{ matrix.flag-for-router }} ${{ matrix.flag-for-pinia }} ${{ matrix.flag-for-vitest }} ${{ matrix.flag-for-e2e }} # Sometimes the Linux runner can't verify Cypress in 30s CYPRESS_VERIFY_TIMEOUT: 60000 steps: From ac7948f0fab71f5c3a19c6bfc161b75f86066c6e Mon Sep 17 00:00:00 2001 From: "yordan.ramchev" Date: Wed, 6 Mar 2024 17:25:40 +0200 Subject: [PATCH 08/14] fix: flag-for-vue-devtools --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ee036477..65241e0d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -68,7 +68,7 @@ jobs: flag-for-pinia: '--pinia' flag-for-vitest: '--vitest' flag-for-e2e: '--cypress' - flag-for-vue-devtools: 'vue-devtools' + flag-for-vue-devtools: '--vue-devtools' - node-version: 18 os: macos-latest @@ -78,7 +78,7 @@ jobs: flag-for-pinia: '--pinia' flag-for-vitest: '--vitest' flag-for-e2e: '--cypress' - flag-for-vue-devtools: 'vue-devtools' + flag-for-vue-devtools: '--vue-devtools' - node-version: 20 os: ubuntu-latest @@ -88,7 +88,7 @@ jobs: flag-for-pinia: '--pinia' flag-for-vitest: '--vitest' flag-for-e2e: '--cypress' - flag-for-vue-devtools: 'vue-devtools' + flag-for-vue-devtools: '--vue-devtools' - node-version: 16 os: ubuntu-latest @@ -98,7 +98,7 @@ jobs: flag-for-pinia: '--pinia' flag-for-vitest: '--vitest' flag-for-e2e: '--cypress' - flag-for-vue-devtools: 'vue-devtools' + flag-for-vue-devtools: '--vue-devtools' runs-on: ${{ matrix.os }} continue-on-error: ${{ matrix.os == 'windows-latest' }} env: From 38533f96f3e6f57501bd0267b118e4db492a68ea Mon Sep 17 00:00:00 2001 From: "yordan.ramchev" Date: Wed, 6 Mar 2024 18:08:43 +0200 Subject: [PATCH 09/14] fix: devtools flag as part of enf FEATURE_FLAGS --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 65241e0d..448cd62a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -102,7 +102,7 @@ jobs: runs-on: ${{ matrix.os }} continue-on-error: ${{ matrix.os == 'windows-latest' }} env: - FEATURE_FLAGS: ${{ matrix.flag-for-ts }} ${{ matrix.flag-for-jsx }} ${{ matrix.flag-for-router }} ${{ matrix.flag-for-pinia }} ${{ matrix.flag-for-vitest }} ${{ matrix.flag-for-e2e }} + FEATURE_FLAGS: ${{ matrix.flag-for-ts }} ${{ matrix.flag-for-jsx }} ${{ matrix.flag-for-router }} ${{ matrix.flag-for-pinia }} ${{ matrix.flag-for-vitest }} ${{ matrix.flag-for-e2e }} ${{matrix.flag-for-vue-devtools}} # Sometimes the Linux runner can't verify Cypress in 30s CYPRESS_VERIFY_TIMEOUT: 60000 steps: From 36a6371486eb490ec311c9088ed8f39eef590df4 Mon Sep 17 00:00:00 2001 From: "yordan.ramchev" Date: Thu, 7 Mar 2024 12:17:55 +0200 Subject: [PATCH 10/14] nit: use the same style of writing as router --- index.ts | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/index.ts b/index.ts index a14398d0..ff31504c 100755 --- a/index.ts +++ b/index.ts @@ -83,7 +83,7 @@ async function init() { // --playwright // --eslint // --eslint-with-prettier (only support prettier through eslint for simplicity) - // --vue-devtools + // --vue-devtools / --devtools // --force (for force overwriting) const args = process.argv.slice(2) @@ -95,7 +95,9 @@ async function init() { 'with-tests': { type: 'boolean' }, tests: { type: 'boolean' }, 'vue-router': { type: 'boolean' }, - router: { type: 'boolean' } + router: { type: 'boolean' }, + 'vue-devtools': { type: 'boolean' }, + devtools: { type: 'boolean' } } as const const { values: argv } = parseArgs({ @@ -118,7 +120,7 @@ async function init() { argv.nightwatch ?? argv.playwright ?? argv.eslint ?? - argv['vue-devtools'] + (argv.devtools || argv['vue-devtools']) ) === 'boolean' let targetDir = args[0] @@ -140,7 +142,7 @@ async function init() { needsE2eTesting?: false | 'cypress' | 'nightwatch' | 'playwright' needsEslint?: boolean needsPrettier?: boolean - needsVueDevtools?: boolean + needsDevTools?: boolean } = {} try { @@ -291,9 +293,9 @@ async function init() { inactive: language.defaultToggleOptions.inactive }, { - name: 'needsVueDevtools', + name: 'needsDevTools', type: () => (isFeatureFlagsUsed ? null : 'toggle'), - message: language.needsVueDevtools.message, + message: language.needsDevTools.message, initial: false, active: language.defaultToggleOptions.active, inactive: language.defaultToggleOptions.inactive @@ -323,7 +325,7 @@ async function init() { needsVitest = argv.vitest || argv.tests, needsEslint = argv.eslint || argv['eslint-with-prettier'], needsPrettier = argv['eslint-with-prettier'], - needsVueDevtools = argv['vue-devtools'] + needsDevTools = argv.devtools } = result const { needsE2eTesting } = result @@ -467,8 +469,8 @@ async function init() { render('config/prettier') } - if (needsVueDevtools) { - render('config/vue-devtools') + if (needsDevTools) { + render('config/devtools') } // Render code template. // prettier-ignore From 9dddc3b928fe9d17adaafaf9c310af1f1ccf7ae9 Mon Sep 17 00:00:00 2001 From: "yordan.ramchev" Date: Thu, 7 Mar 2024 12:18:47 +0200 Subject: [PATCH 11/14] nit: use the same style of writing as router --- .github/workflows/ci.yml | 10 +++++----- locales/en-US.json | 2 +- locales/fr-FR.json | 2 +- locales/tr-TR.json | 2 +- locales/zh-Hans.json | 2 +- locales/zh-Hant.json | 2 +- scripts/snapshot.mjs | 2 +- .../config/{vue-devtools => devtools}/package.json | 0 .../{vue-devtools => devtools}/vite.config.js.data.mjs | 0 utils/getLanguage.ts | 2 +- 10 files changed, 12 insertions(+), 12 deletions(-) rename template/config/{vue-devtools => devtools}/package.json (100%) rename template/config/{vue-devtools => devtools}/vite.config.js.data.mjs (100%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 448cd62a..79ddf8d2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -68,7 +68,7 @@ jobs: flag-for-pinia: '--pinia' flag-for-vitest: '--vitest' flag-for-e2e: '--cypress' - flag-for-vue-devtools: '--vue-devtools' + flag-for-devtools: '--devtools' - node-version: 18 os: macos-latest @@ -78,7 +78,7 @@ jobs: flag-for-pinia: '--pinia' flag-for-vitest: '--vitest' flag-for-e2e: '--cypress' - flag-for-vue-devtools: '--vue-devtools' + flag-for-devtools: '--devtools' - node-version: 20 os: ubuntu-latest @@ -88,7 +88,7 @@ jobs: flag-for-pinia: '--pinia' flag-for-vitest: '--vitest' flag-for-e2e: '--cypress' - flag-for-vue-devtools: '--vue-devtools' + flag-for-devtools: '--devtools' - node-version: 16 os: ubuntu-latest @@ -98,11 +98,11 @@ jobs: flag-for-pinia: '--pinia' flag-for-vitest: '--vitest' flag-for-e2e: '--cypress' - flag-for-vue-devtools: '--vue-devtools' + flag-for-devtools: '--devtools' runs-on: ${{ matrix.os }} continue-on-error: ${{ matrix.os == 'windows-latest' }} env: - FEATURE_FLAGS: ${{ matrix.flag-for-ts }} ${{ matrix.flag-for-jsx }} ${{ matrix.flag-for-router }} ${{ matrix.flag-for-pinia }} ${{ matrix.flag-for-vitest }} ${{ matrix.flag-for-e2e }} ${{matrix.flag-for-vue-devtools}} + FEATURE_FLAGS: ${{ matrix.flag-for-ts }} ${{ matrix.flag-for-jsx }} ${{ matrix.flag-for-router }} ${{ matrix.flag-for-pinia }} ${{ matrix.flag-for-vitest }} ${{ matrix.flag-for-e2e }} ${{matrix.flag-for-devtools}} # Sometimes the Linux runner can't verify Cypress in 30s CYPRESS_VERIFY_TIMEOUT: 60000 steps: diff --git a/locales/en-US.json b/locales/en-US.json index d29388f1..6a56d85e 100644 --- a/locales/en-US.json +++ b/locales/en-US.json @@ -50,7 +50,7 @@ "needsPrettier": { "message": "Add Prettier for code formatting?" }, - "needsVueDevtools": { + "needsDevTools": { "message": "Add Vue DevTools extension for debugging? (experimental)" }, "errors": { diff --git a/locales/fr-FR.json b/locales/fr-FR.json index aead23e4..03a46de1 100644 --- a/locales/fr-FR.json +++ b/locales/fr-FR.json @@ -50,7 +50,7 @@ "needsPrettier": { "message": "Ajouter Prettier pour le formatage du code\u00a0?" }, - "needsVueDevtools": { + "needsDevTools": { "message": "Ajouter l'extension Vue DevTools pour le débogage\u00a0? (expérimental)" }, "errors": { diff --git a/locales/tr-TR.json b/locales/tr-TR.json index 2c3383cf..b2159d1f 100644 --- a/locales/tr-TR.json +++ b/locales/tr-TR.json @@ -50,7 +50,7 @@ "needsPrettier": { "message": "Kod formatlama için Prettier eklensin mi?" }, - "needsVueDevtools": { + "needsDevTools": { "message": "Add Vue DevTools extension for debugging? (experimental)" }, "errors": { diff --git a/locales/zh-Hans.json b/locales/zh-Hans.json index 651c60fe..937ce327 100644 --- a/locales/zh-Hans.json +++ b/locales/zh-Hans.json @@ -50,7 +50,7 @@ "needsPrettier": { "message": "是否引入 Prettier 用于代码格式化?" }, - "needsVueDevtools": { + "needsDevTools": { "message": "Add Vue DevTools extension for debugging? (experimental)" }, "errors": { diff --git a/locales/zh-Hant.json b/locales/zh-Hant.json index a65e4598..14d6fb94 100644 --- a/locales/zh-Hant.json +++ b/locales/zh-Hant.json @@ -54,7 +54,7 @@ "needsPrettier": { "message": "是否引入 Prettier 用於程式碼格式化?" }, - "needsVueDevtools": { + "needsDevTools": { "message": "Add Vue DevTools extension for debugging? (experimental)" }, "errors": { diff --git a/scripts/snapshot.mjs b/scripts/snapshot.mjs index 259688e3..2554446f 100644 --- a/scripts/snapshot.mjs +++ b/scripts/snapshot.mjs @@ -16,7 +16,7 @@ const featureFlags = [ 'cypress', 'playwright', 'nightwatch', - 'vue-devtools' + 'devtools' ] const featureFlagsDenylist = [ ['cypress', 'playwright'], diff --git a/template/config/vue-devtools/package.json b/template/config/devtools/package.json similarity index 100% rename from template/config/vue-devtools/package.json rename to template/config/devtools/package.json diff --git a/template/config/vue-devtools/vite.config.js.data.mjs b/template/config/devtools/vite.config.js.data.mjs similarity index 100% rename from template/config/vue-devtools/vite.config.js.data.mjs rename to template/config/devtools/vite.config.js.data.mjs diff --git a/utils/getLanguage.ts b/utils/getLanguage.ts index 8135381d..39ec319d 100644 --- a/utils/getLanguage.ts +++ b/utils/getLanguage.ts @@ -30,7 +30,7 @@ interface Language { needsE2eTesting: LanguageItem needsEslint: LanguageItem needsPrettier: LanguageItem - needsVueDevtools: LanguageItem + needsDevTools: LanguageItem errors: { operationCancelled: string } From 6734c3a71b36c482b82d57e1d550c7761fe2bf35 Mon Sep 17 00:00:00 2001 From: "yordan.ramchev" Date: Thu, 7 Mar 2024 12:23:31 +0200 Subject: [PATCH 12/14] chore: update lock file --- pnpm-lock.yaml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8b5d6769..7d3de0ca 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -92,6 +92,12 @@ importers: specifier: ^13.6.6 version: 13.6.6 + template/config/devtools: + devDependencies: + vite-plugin-vue-devtools: + specifier: ^7.0.16 + version: 7.0.16(vite@5.1.4)(vue@3.4.21) + template/config/jsx: dependencies: vue: @@ -194,12 +200,6 @@ importers: specifier: ^1.3.1 version: 1.3.1(@types/node@20.11.24)(jsdom@24.0.0) - template/config/vue-devtools: - devDependencies: - vite-plugin-vue-devtools: - specifier: ^7.0.16 - version: 7.0.16(vite@5.1.4)(vue@3.4.21) - template/tsconfig/base: devDependencies: '@tsconfig/node20': @@ -514,7 +514,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.3): @@ -523,7 +523,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.23.3): From 95ed5c6d8a79e035d664b776290c3400b01e8a54 Mon Sep 17 00:00:00 2001 From: "yordan.ramchev" Date: Thu, 7 Mar 2024 12:52:25 +0200 Subject: [PATCH 13/14] fix: missing vue-router, ts & vue-devtools flags --- index.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/index.ts b/index.ts index ff31504c..03ee00c5 100755 --- a/index.ts +++ b/index.ts @@ -319,13 +319,13 @@ async function init() { packageName = projectName ?? defaultProjectName, shouldOverwrite = argv.force, needsJsx = argv.jsx, - needsTypeScript = argv.typescript, - needsRouter = argv.router, + needsTypeScript = argv.ts || argv.typescript, + needsRouter = argv.router || argv['vue-router'], needsPinia = argv.pinia, needsVitest = argv.vitest || argv.tests, needsEslint = argv.eslint || argv['eslint-with-prettier'], needsPrettier = argv['eslint-with-prettier'], - needsDevTools = argv.devtools + needsDevTools = argv.devtools || argv['vue-devtools'] } = result const { needsE2eTesting } = result From affe619648b7c59c0d0659de2e2ad367fb6ebe5a Mon Sep 17 00:00:00 2001 From: "yordan.ramchev" Date: Thu, 7 Mar 2024 18:19:54 +0200 Subject: [PATCH 14/14] refactor: move devtools as a separate feature flag --- scripts/snapshot.mjs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/scripts/snapshot.mjs b/scripts/snapshot.mjs index 2554446f..01b909fa 100644 --- a/scripts/snapshot.mjs +++ b/scripts/snapshot.mjs @@ -15,8 +15,7 @@ const featureFlags = [ 'vitest', 'cypress', 'playwright', - 'nightwatch', - 'devtools' + 'nightwatch' ] const featureFlagsDenylist = [ ['cypress', 'playwright'], @@ -55,7 +54,7 @@ function fullCombination(arr) { } let flagCombinations = fullCombination(featureFlags) -flagCombinations.push(['default']) +flagCombinations.push(['default'], ['devtools']) // `--with-tests` are equivalent of `--vitest --cypress` // Previously it means `--cypress` without `--vitest`.