Currently experimenting with Vue 3, Vite, and TypeScript to build a Vue project. The configuration process has proven to be quite challenging. Despite consulting various documentation sources, I have not been successful in achieving my desired outcome. My goal is to ensure that the project does not build if there are any code errors present.
I have provided the code below and would greatly appreciate any assistance.
App.vue
<template>
<header>
<h1>The Learning Resources App</h1>
</header>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
// import StoredResource from '//StoredResource';
interface VueData {
storedResources: StoredResource[];
}
export default defineComponent({
name: 'App',
data(): VueData {
return {
storedResources: [
{
id: 'official-guide' as number,
title: 'Official Guide',
description: 'The official Vue.js documentation.',
link: 'https://vuejs.org/',
},
{
id: 'google',
title: 'Google',
description: 'Learn to google...',
link: 'https://www.google.co.uk/',
},
],
};
},
});
</script>
package.json
{
"name": "the-learning-resources-app---vue-js-ts",
"version": "0.0.0",
"scripts": {
"dev": "vite",
"build": "run-p type-check build-only",
"preview": "vite preview --port 5001",
"test": "jest src",
"test:e2e": "start-server-and-test preview http://127.0.0.1:5001/ 'npx cypress open'",
"test:e2e:ci": "start-server-and-test 'npm run build && npm run preview' http://127.0.0.1:5001/ 'npx cypress run'",
"cypress": "cypress run",
"build-only": "vite build",
"type-check": "vue-tsc --noEmit -p tsconfig.vitest.json --composite false",
"lint": "eslint .",
"lint:fix": "npm run lint -- --fix",
"format": "prettier -w .",
"prepare": "husky install"
},
"dependencies": {
"vue": "^3.2.36"
},
"devDependencies": {
"@rushstack/eslint-patch": "^1.1.0",
"@types/jest": "^28.1.1",
"@types/jsdom": "^16.2.14",
"@types/node": "^16.11.36",
"@vitejs/plugin-vue": "^2.3.3",
"@vue/eslint-config-prettier": "^7.0.0",
"@vue/eslint-config-typescript": "^10.0.0",
"@vue/test-utils": "^2.0.0-rc.18",
"@vue/tsconfig": "^0.1.3",
"cypress": "^9.7.0",
"eslint": "^8.5.0",
"eslint-plugin-cypress": "^2.12.1",
"eslint-plugin-import": "^2.26.0",
"eslint-plugin-simple-import-sort": "^7.0.0",
"eslint-plugin-vue": "^8.2.0",
"husky": "^8.0.1",
"jest": "^26.6.3",
"jsdom": "^19.0.0",
"npm-run-all": "^4.1.5",
"prettier": "^2.5.1",
"start-server-and-test": "^1.14.0",
"ts-jest": "^26.5.6",
"typescript": "~4.7.2",
"vite": "^2.9.9",
"vitest": "^0.13.0",
"vue-jest": "^5.0.0-alpha.10",
"vue-tsc": "^0.35.2"
}
}
tsconfig.json
{
"compilerOptions": {
"target": "es5",
"module": "esnext",
"strict": true,
"jsx": "preserve",
"importHelpers": true,
"moduleResolution": "node",
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"sourceMap": true,
"baseUrl": ".",
"paths": {
"/@/*": [
// / to begin with.
"src/*"
]
},
"lib": ["esnext", "dom", "dom.iterable", "scripthost"],
"types": ["vite/client", "jest", "@types/jest", "node", "cypress"]
},
"include": ["src/**/*"],
"exclude": ["node_modules"]
}