flag-for-vitest: '--vitest'
flag-for-e2e: '--cypress'
flag-for-eslint: '--eslint'
- flag-for-devtools: '--devtools'
- node-version: 18
os: macos-latest
flag-for-vitest: '--vitest'
flag-for-e2e: '--cypress'
flag-for-eslint: '--eslint'
- flag-for-devtools: '--devtools'
- node-version: 20
os: ubuntu-latest
flag-for-vitest: '--vitest'
flag-for-e2e: '--cypress'
flag-for-eslint: '--eslint'
- flag-for-devtools: '--devtools'
- node-version: 22
os: ubuntu-latest
flag-for-vitest: '--vitest'
flag-for-e2e: '--cypress'
flag-for-eslint: '--eslint'
- 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-eslint}} ${{matrix.flag-for-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-eslint}}
# Sometimes the Linux runner can't verify Cypress in 30s
CYPRESS_VERIFY_TIMEOUT: 60000
steps:
// --playwright
// --eslint
// --eslint-with-prettier (only support prettier through eslint for simplicity)
- // --vue-devtools / --devtools
// --force (for force overwriting)
const args = process.argv.slice(2)
tests: { type: 'boolean' },
'vue-router': { type: 'boolean' },
router: { type: 'boolean' },
- 'vue-devtools': { type: 'boolean' },
- devtools: { type: 'boolean' },
} as const
const { values: argv, positionals } = parseArgs({
argv.nightwatch ??
argv.playwright ??
argv.eslint ??
- argv['eslint-with-prettier'] ??
- (argv.devtools || argv['vue-devtools'])
+ argv['eslint-with-prettier']
) === 'boolean'
let targetDir = positionals[0]
needsEslint?: false | 'eslintOnly' | 'speedUpWithOxlint'
needsOxlint?: boolean
needsPrettier?: boolean
- needsDevTools?: boolean
} = {}
try {
// - Add Playwright for end-to-end testing?
// - Add ESLint for code quality?
// - Add Prettier for code formatting?
- // - Add Vue DevTools 7 extension for debugging? (experimental)
result = await prompts(
[
{
active: language.defaultToggleOptions.active,
inactive: language.defaultToggleOptions.inactive,
},
- {
- name: 'needsDevTools',
- type: () => (isFeatureFlagsUsed ? null : 'toggle'),
- message: language.needsDevTools.message,
- initial: false,
- active: language.defaultToggleOptions.active,
- inactive: language.defaultToggleOptions.inactive,
- },
],
{
onCancel: () => {
needsPinia = argv.pinia,
needsVitest = argv.vitest || argv.tests,
needsPrettier = argv['eslint-with-prettier'],
- needsDevTools = argv.devtools || argv['vue-devtools'],
} = result
const needsEslint = Boolean(argv.eslint || argv['eslint-with-prettier'] || result.needsEslint)
render('config/prettier')
}
- if (needsDevTools) {
- render('config/devtools')
- }
// Render code template.
// prettier-ignore
const codeTemplate =
"needsPrettier": {
"message": "Add Prettier for code formatting?"
},
- "needsDevTools": {
- "message": "Add Vue DevTools 7 extension for debugging? (experimental)"
- },
"errors": {
"operationCancelled": "Operation cancelled"
},
"needsPrettier": {
"message": "Ajouter Prettier pour le formatage du code\u00a0?"
},
- "needsDevTools": {
- "message": "Ajouter l'extension Vue DevTools 7 pour le débogage\u00a0? (expérimental)"
- },
"errors": {
"operationCancelled": "Operation annulée"
},
"needsPrettier": {
"message": "Kod formatlama için Prettier eklensin mi?"
},
- "needsDevTools": {
- "message": "Hata ayıklama için Vue DevTools 7 eklentisi eklensin mi? (deneysel)"
- },
"errors": {
"operationCancelled": "İşlem iptal edildi"
},
"needsPrettier": {
"message": "是否引入 Prettier 用于代码格式化?"
},
- "needsDevTools": {
- "message": "是否引入 Vue DevTools 7 扩展用于调试? (试验阶段)"
- },
"errors": {
"operationCancelled": "操作取消"
},
"needsPrettier": {
"message": "是否引入 Prettier 用於程式碼格式化?"
},
- "needsDevTools": {
- "message": "是否引入 Vue DevTools 7 擴充元件以協助偵錯?(試驗性功能)"
- },
"errors": {
"operationCancelled": "操作取消"
},
vite:
specifier: ^5.4.10
version: 5.4.10(@types/node@22.7.5)
+ vite-plugin-vue-devtools:
+ specifier: ^7.5.4
+ version: 7.5.4(rollup@4.24.0)(vite@5.4.10(@types/node@22.7.5))(vue@3.5.12(typescript@5.6.3))
template/config/cypress:
devDependencies:
specifier: ^13.15.1
version: 13.15.1
- template/config/devtools:
- devDependencies:
- vite-plugin-vue-devtools:
- specifier: ^7.5.4
- version: 7.5.4(rollup@4.24.0)(vite@5.4.10(@types/node@22.7.5))(vue@3.5.12(typescript@5.6.3))
-
template/config/jsx:
dependencies:
vue:
'@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.25.8)
'@vue/compiler-dom': 3.5.12
kolorist: 1.8.0
- magic-string: 0.30.11
+ magic-string: 0.30.12
vite: 5.4.10(@types/node@22.7.5)
transitivePeerDependencies:
- supports-color
let flagCombinations = fullCombination(featureFlags)
flagCombinations.push(
['default'],
- ['devtools', 'router', 'pinia'],
+ ['router', 'pinia'],
['eslint'],
['eslint-with-prettier'],
)
},
"devDependencies": {
"@vitejs/plugin-vue": "^5.1.4",
- "vite": "^5.4.10"
+ "vite": "^5.4.10",
+ "vite-plugin-vue-devtools": "^7.5.4"
}
}
importer: "import vue from '@vitejs/plugin-vue'",
initializer: 'vue()',
},
+
+ {
+ id: 'vite-plugin-vue-devtools',
+ importer: "import vueDevTools from 'vite-plugin-vue-devtools'",
+ initializer: 'vueDevTools()',
+ }
],
}
}
+++ /dev/null
-{
- "devDependencies": {
- "vite-plugin-vue-devtools": "^7.5.4"
- }
-}
+++ /dev/null
-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],
- }
-}
needsE2eTesting: LanguageItem
needsEslint: LanguageItem
needsPrettier: LanguageItem
- needsDevTools: LanguageItem
errors: {
operationCancelled: string
}