diff --git a/template/base/jsconfig.json b/template/base/jsconfig.json
index 5a1f2d22..b5f03929 100644
--- a/template/base/jsconfig.json
+++ b/template/base/jsconfig.json
@@ -1,6 +1,9 @@
 {
   "compilerOptions": {
     "paths": {
+      // TODO: no longer needed after TS 5.4
+      "#src/*": ["./src/*"],
+      // Deprecated, use `#src` instead (configured in `package.json` `imports` field)
       "@/*": ["./src/*"]
     }
   },
diff --git a/template/base/package.json b/template/base/package.json
index 558fbc41..f711a567 100644
--- a/template/base/package.json
+++ b/template/base/package.json
@@ -1,6 +1,9 @@
 {
   "private": true,
   "type": "module",
+  "imports": {
+    "#src/": "./src/"
+  },
   "scripts": {
     "dev": "vite",
     "build": "vite build",
diff --git a/template/base/vite.config.js.ejs b/template/base/vite.config.js.ejs
index 3851c427..c5cd9d2f 100644
--- a/template/base/vite.config.js.ejs
+++ b/template/base/vite.config.js.ejs
@@ -14,6 +14,7 @@ export default defineConfig({
   ],
   resolve: {
     alias: {
+      // Deprecated, use `#src` instead (configured in `package.json` `imports` field)
       '@': fileURLToPath(new URL('./src', import.meta.url))
     },
   },
diff --git a/template/code/router/src/App.vue b/template/code/router/src/App.vue
index e8641950..719e4d99 100644
--- a/template/code/router/src/App.vue
+++ b/template/code/router/src/App.vue
@@ -5,7 +5,7 @@ import HelloWorld from './components/HelloWorld.vue'
 
 <template>
   <header>
-    <img alt="Vue logo" class="logo" src="@/assets/logo.svg" width="125" height="125" />
+    <img alt="Vue logo" class="logo" src="#src/assets/logo.svg" width="125" height="125" />
 
     <div class="wrapper">
       <HelloWorld msg="You did it!" />
diff --git a/template/code/typescript-router/src/App.vue b/template/code/typescript-router/src/App.vue
index 7905b051..fe29657d 100644
--- a/template/code/typescript-router/src/App.vue
+++ b/template/code/typescript-router/src/App.vue
@@ -5,7 +5,7 @@ import HelloWorld from './components/HelloWorld.vue'
 
 <template>
   <header>
-    <img alt="Vue logo" class="logo" src="@/assets/logo.svg" width="125" height="125" />
+    <img alt="Vue logo" class="logo" src="#src/assets/logo.svg" width="125" height="125" />
 
     <div class="wrapper">
       <HelloWorld msg="You did it!" />
diff --git a/template/config/cypress-ct/cypress/support/component.js b/template/config/cypress-ct/cypress/support/component.js
index 7283cad6..9aeff110 100644
--- a/template/config/cypress-ct/cypress/support/component.js
+++ b/template/config/cypress-ct/cypress/support/component.js
@@ -20,7 +20,7 @@ import './commands'
 // require('./commands')
 
 // Import global styles
-import '@/assets/main.css'
+import '#src/assets/main.css'
 
 import { mount } from 'cypress/vue'
 
diff --git a/template/config/cypress-ct/cypress/support/component.ts b/template/config/cypress-ct/cypress/support/component.ts
index 04e4c352..b2a0063d 100644
--- a/template/config/cypress-ct/cypress/support/component.ts
+++ b/template/config/cypress-ct/cypress/support/component.ts
@@ -20,7 +20,7 @@ import './commands'
 // require('./commands')
 
 // Import global styles
-import '@/assets/main.css'
+import '#src/assets/main.css'
 
 import { mount } from 'cypress/vue'
 
diff --git a/template/tsconfig/base/tsconfig.app.json b/template/tsconfig/base/tsconfig.app.json
index 93f952f1..cbbfd1cf 100644
--- a/template/tsconfig/base/tsconfig.app.json
+++ b/template/tsconfig/base/tsconfig.app.json
@@ -7,6 +7,9 @@
     "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
 
     "paths": {
+      // TODO: no longer needed after TS 5.4
+      "#src/*": ["./src/*"],
+      // Deprecated, use `#src` instead (configured in `package.json` `imports` field)
       "@/*": ["./src/*"]
     }
   }
diff --git a/template/tsconfig/nightwatch-ct/tsconfig.app.json b/template/tsconfig/nightwatch-ct/tsconfig.app.json
index 93f952f1..cbbfd1cf 100644
--- a/template/tsconfig/nightwatch-ct/tsconfig.app.json
+++ b/template/tsconfig/nightwatch-ct/tsconfig.app.json
@@ -7,6 +7,9 @@
     "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
 
     "paths": {
+      // TODO: no longer needed after TS 5.4
+      "#src/*": ["./src/*"],
+      // Deprecated, use `#src` instead (configured in `package.json` `imports` field)
       "@/*": ["./src/*"]
     }
   }