@citruslime/create-boilerplate 3.0.0-beta.2 → 3.0.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/README.md +7 -7
  2. package/main.js +353 -314
  3. package/package.json +3 -4
  4. package/template/README.md +4 -4
  5. package/template/_editorconfig +5 -0
  6. package/template/_gitattributes +5 -2
  7. package/template/_gitignore +6 -2
  8. package/template/_husky/post-checkout +4 -0
  9. package/template/_husky/post-merge +4 -0
  10. package/template/_husky/pre-commit +4 -0
  11. package/template/apps/app/_lintstagedrc.js +5 -0
  12. package/template/apps/app/_stylelint.config.js +4 -0
  13. package/template/apps/app/eslint.config.js +39 -0
  14. package/template/apps/app/index.html +17 -0
  15. package/template/apps/app/package.json +23 -0
  16. package/template/{src → apps/app/src}/app.vue +1 -7
  17. package/template/apps/app/src/components/.gitkeep +0 -0
  18. package/template/apps/app/src/main.css +6 -0
  19. package/template/apps/app/src/main.ts +17 -0
  20. package/template/{src/pages/dashboard/index.vue → apps/app/src/pages/dashboard.vue} +4 -6
  21. package/template/{src/router/index.ts → apps/app/src/router.ts} +12 -7
  22. package/template/apps/app/src/state/auth.ts +11 -0
  23. package/template/apps/app/src/utils/.gitkeep +0 -0
  24. package/template/{tsconfig.app.json → apps/app/tsconfig.app.json} +7 -9
  25. package/template/{tsconfig.json → apps/app/tsconfig.json} +1 -4
  26. package/template/apps/app/tsconfig.node.json +13 -0
  27. package/template/{vite.config.ts → apps/app/vite.config.ts} +57 -27
  28. package/template/package.json +11 -10
  29. package/template/packages/config-eslint/_lintstagedrc.js +4 -0
  30. package/template/packages/config-eslint/eslint.config.js +1 -0
  31. package/template/packages/config-eslint/package.json +10 -0
  32. package/template/packages/config-stylelint/_lintstagedrc.js +4 -0
  33. package/template/packages/config-stylelint/eslint.config.js +1 -0
  34. package/template/packages/config-stylelint/package.json +13 -0
  35. package/template/packages/config-typescript/node.json +17 -0
  36. package/template/packages/config-typescript/package.json +9 -0
  37. package/template/packages/config-typescript/vue.json +18 -0
  38. package/template/packages/utils/_lintstagedrc.js +4 -0
  39. package/template/packages/utils/eslint.config.js +1 -0
  40. package/template/packages/utils/exports-list.json +1 -0
  41. package/template/packages/utils/exports-list.ts +95 -0
  42. package/template/packages/utils/package.json +43 -0
  43. package/template/packages/utils/plugin.ts +55 -0
  44. package/template/packages/utils/resolver.ts +38 -0
  45. package/template/packages/utils/src/api/api.ts +6 -0
  46. package/template/packages/utils/src/api/endpoints.ts +18 -0
  47. package/template/packages/utils/src/api/errors.ts +19 -0
  48. package/template/packages/utils/src/api/models/app-info.ts +5 -0
  49. package/template/packages/utils/src/index.ts +2 -0
  50. package/template/packages/utils/tsconfig.build.json +19 -0
  51. package/template/packages/utils/tsconfig.json +11 -0
  52. package/template/packages/utils/tsconfig.lib.json +15 -0
  53. package/template/packages/utils/tsconfig.node.json +21 -0
  54. package/template/packages/utils/vite.config.ts +31 -0
  55. package/template/pnpm-workspace.yaml +11 -0
  56. package/template/{.vscode/template.code-workspace → template.code-workspace} +26 -7
  57. package/template/turbo.json +24 -0
  58. package/hooks/post-checkout +0 -8
  59. package/hooks/post-merge +0 -8
  60. package/hooks/pre-commit +0 -8
  61. package/template/.vscode/extensions.json +0 -14
  62. package/template/.vscode/settings.json +0 -40
  63. package/template/_lintstagedrc.js +0 -5
  64. package/template/_npmrc +0 -3
  65. package/template/eslint.config.js +0 -11
  66. package/template/index.html +0 -13
  67. package/template/postcss.config.js +0 -6
  68. package/template/src/main.ts +0 -15
  69. package/template/src/state/auth.ts +0 -13
  70. package/template/tailwind.config.ts +0 -9
  71. package/template/tsconfig.node.json +0 -17
  72. package/template/tsconfig.vitest.json +0 -13
  73. /package/template/{_stylelintignore → apps/app/_stylelintignore} +0 -0
  74. /package/template/{env.d.ts → apps/app/env.d.ts} +0 -0
  75. /package/template/{public → apps/app/public}/favicon.ico +0 -0
  76. /package/template/{_stylelint.config.js → packages/config-stylelint/index.js} +0 -0
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@citruslime/create-boilerplate",
3
3
  "type": "module",
4
- "version": "3.0.0-beta.2",
4
+ "version": "3.0.0-beta.3",
5
5
  "author": {
6
6
  "name": "Citrus-Lime Ltd",
7
7
  "url": "https://citruslime.com"
@@ -13,8 +13,7 @@
13
13
  },
14
14
  "files": [
15
15
  "main.js",
16
- "template",
17
- "hooks"
16
+ "template"
18
17
  ],
19
18
  "maintainers": [
20
19
  "Citrus-Lime"
@@ -24,7 +23,7 @@
24
23
  "create-boilerplate": "main.js"
25
24
  },
26
25
  "engines": {
27
- "node": ">=18.0.0"
26
+ "node": ">=24.0.0"
28
27
  },
29
28
  "dependencies": {
30
29
  "kolorist": "^1.7.0",
@@ -1,11 +1,11 @@
1
- # Citrus-Lime Boilerplate App
1
+ # [[PACKAGE_NAME]]
2
2
 
3
- This boilerplate should provide a good basis for creating a new Citrus-Lime web app.
3
+ This project was scaffolded using the Citrus-Lime boilerplate scaffolding app (@citruslime/create-boilerplate).
4
4
 
5
5
  It makes use of the various @citruslime packages, as well as the current standards for a Vue 3 + TypeScript app and various helpful Vite plugins to make development easier.
6
6
 
7
- Linting is provided by default by a combination of ESLint and StyleLint.
7
+ Linting is provided by a combination of ESLint and Stylelint via shared workspace config packages.
8
8
 
9
9
  ### Areas of Consideration
10
10
 
11
- Example code is provided in the state and views folders. It should be deleted or replaced, once development is started.
11
+ The full template contains various example code that should be replaced/expanded upon, once development is started.
@@ -1,3 +1,5 @@
1
+ root = true
2
+
1
3
  [*]
2
4
  indent_style = space
3
5
  indent_size = 4
@@ -8,3 +10,6 @@ insert_final_newline = true
8
10
 
9
11
  [*.css]
10
12
  indent_style = tab
13
+
14
+ [*.yml]
15
+ indent_size = 2
@@ -1,5 +1,8 @@
1
1
  * text eol=lf
2
2
 
3
- *.png binary
4
- *.jpg binary
3
+ *.gif binary
5
4
  *.ico binary
5
+ *.jpg binary
6
+ *.jpeg binary
7
+ *.png binary
8
+ *.webp binary
@@ -4,16 +4,17 @@ npm-debug.log*
4
4
  yarn-debug.log*
5
5
  yarn-error.log*
6
6
  pnpm-debug.log*
7
- lerna-debug.log*
8
7
 
9
8
  node_modules
10
9
  .DS_Store
11
10
  dist
12
11
  dist-ssr
13
12
  *.local
13
+ *.tsbuildinfo
14
+
15
+ .turbo/
14
16
 
15
17
  .vscode/*
16
- !.vscode/*.code-workspace
17
18
  !.vscode/settings.json
18
19
  !.vscode/extensions.json
19
20
  .idea
@@ -22,3 +23,6 @@ dist-ssr
22
23
  *.njsproj
23
24
  *.sln
24
25
  *.sw?
26
+
27
+ coverage/
28
+ *.lcov
@@ -0,0 +1,4 @@
1
+ #!/bin/sh
2
+ set -e
3
+
4
+ pnpm install
@@ -0,0 +1,4 @@
1
+ #!/bin/sh
2
+ set -e
3
+
4
+ pnpm install
@@ -0,0 +1,4 @@
1
+ #!/bin/sh
2
+ set -e
3
+
4
+ pnpm exec lint-staged
@@ -0,0 +1,5 @@
1
+ /* eslint-disable @typescript-eslint/naming-convention */
2
+ export default {
3
+ '*.{js,cjs,mjs,ts,cts,mts,vue}': ['eslint --fix'],
4
+ '*.{css,vue}': ['stylelint --fix']
5
+ };
@@ -0,0 +1,4 @@
1
+ /** @type {import('stylelint').Config} */
2
+ export default {
3
+ extends: ['@[[PACKAGE_NAME]]/config-stylelint']
4
+ };
@@ -0,0 +1,39 @@
1
+ import path from 'node:path';
2
+
3
+ import config from '@[[PACKAGE_NAME]]/config-eslint';
4
+
5
+ import autoImports from './eslint-auto-imports.js';
6
+
7
+ export default [
8
+ ...config,
9
+ {
10
+ languageOptions: {
11
+ ...autoImports,
12
+ parserOptions: {
13
+ projectService: {
14
+ allowDefaultProject: ['*.js'],
15
+ project: ['./tsconfig.json']
16
+ },
17
+ tsconfigRootDir: import.meta.dirname
18
+ }
19
+ },
20
+ settings: {
21
+ 'import/resolver': {
22
+ typescript: {
23
+ project: path.join(import.meta.dirname, 'tsconfig.json'),
24
+ conditionNames: [
25
+ 'development',
26
+ 'module-sync',
27
+ 'types',
28
+ 'import',
29
+ 'require',
30
+ 'node',
31
+ 'browser',
32
+ 'default'
33
+ ]
34
+ },
35
+ node: true
36
+ }
37
+ }
38
+ }
39
+ ];
@@ -0,0 +1,17 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <link rel="icon"
6
+ href="/favicon.ico" />
7
+ <meta name="viewport"
8
+ content="width=device-width, initial-scale=1.0">
9
+ <title>[[PACKAGE_NAME]]</title>
10
+ </head>
11
+
12
+ <body>
13
+ <div id="app"></div>
14
+ <script type="module"
15
+ src="/src/main.ts"></script>
16
+ </body>
17
+ </html>
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "@[[PACKAGE_NAME]]/app",
3
+ "type": "module",
4
+ "version": "0.0.0",
5
+ "private": true,
6
+ "scripts": {
7
+ "dev": "vite",
8
+ "build": "run-s typecheck build-only",
9
+ "build-only": "vite build",
10
+ "typecheck": "vue-tsc --noEmit",
11
+ "preview": "vite preview",
12
+ "lint": "eslint . --fix --cache && stylelint \"src/**/*.{css,vue}\" --fix --cache",
13
+ "test": "vitest run"
14
+ },
15
+ "dependencies": {
16
+ "@[[PACKAGE_NAME]]/utils": "workspace:*"
17
+ },
18
+ "devDependencies": {
19
+ "@[[PACKAGE_NAME]]/config-eslint": "workspace:*",
20
+ "@[[PACKAGE_NAME]]/config-stylelint": "workspace:*",
21
+ "@[[PACKAGE_NAME]]/config-typescript": "workspace:*"
22
+ }
23
+ }
@@ -3,13 +3,7 @@ const route = useRoute();
3
3
  </script>
4
4
 
5
5
  <style>
6
- /* stylelint-disable-next-line import-notation */
7
- @import 'tailwindcss';
8
- @import url('../../../ui/src/main.css');
9
- @import url('highlight.js/styles/base16/material-palenight.css');
10
-
11
- /* stylelint-disable-next-line at-rule-no-unknown */
12
- @reference '../../../theme/tailwind-theme.css';
6
+ @reference '@/main.css';
13
7
 
14
8
  body {
15
9
  @apply bg-off-white min-h-full w-full xl:min-h-screen;
File without changes
@@ -0,0 +1,6 @@
1
+ @import url('@citruslime/ui/style');
2
+
3
+ /* stylelint-disable-next-line import-notation */
4
+ @import '@citruslime/theme';
5
+
6
+ @source './**/*.{vue,js,ts,jsx,tsx}';
@@ -0,0 +1,17 @@
1
+ import './main.css';
2
+ import { i18n } from '@citruslime/ui';
3
+ import { createPersistedState } from 'pinia-plugin-persistedstate';
4
+
5
+ import app from './app.vue';
6
+ import router from './router';
7
+
8
+ const pinia = createPinia()
9
+ .use(createPersistedState({
10
+ key: id => `[[PACKAGE_NAME]]:${id}`
11
+ }));
12
+
13
+ createApp(app)
14
+ .use(router)
15
+ .use(i18n)
16
+ .use(pinia)
17
+ .mount('#app');
@@ -1,15 +1,13 @@
1
- <route lang="json">
2
- {
3
- "path": "/"
4
- }
5
- </route>
6
-
7
1
  <script setup lang="ts">
8
2
  import { setLocaleMessages } from '@citruslime/ui';
9
3
 
10
4
  const { username } = storeToRefs(useAuthStore());
11
5
  const { t } = useI18n();
12
6
 
7
+ definePage({
8
+ path: '/'
9
+ });
10
+
13
11
  setLocaleMessages('en-GB', {
14
12
  messages: {
15
13
  greeting: 'Hello, {name}!'
@@ -1,14 +1,19 @@
1
+ import { routes, handleHotUpdate } from 'vue-router/auto-routes';
2
+
1
3
  const router = createRouter({
2
4
  history: createWebHashHistory(),
3
- extendRoutes (routes) {
4
- routes.push({
5
- name: 'not-found',
5
+ routes: [
6
+ ...routes,
7
+ {
6
8
  path: '/:pathMatch(.*)*',
9
+ name: 'not-found',
7
10
  redirect: '/'
8
- });
9
-
10
- return routes;
11
- }
11
+ }
12
+ ]
12
13
  });
13
14
 
15
+ if (import.meta.hot) {
16
+ handleHotUpdate(router);
17
+ }
18
+
14
19
  export default router;
@@ -0,0 +1,11 @@
1
+ export const useAuthStore = defineStore('auth', () => {
2
+ const username = ref<string>('[[DEFAULT_USERNAME]]');
3
+
4
+ return {
5
+ username
6
+ };
7
+ }, {
8
+ persist: {
9
+ storage: sessionStorage
10
+ }
11
+ });
File without changes
@@ -1,10 +1,10 @@
1
1
  {
2
- "extends": "@vue/tsconfig/tsconfig.dom.json",
2
+ "extends": "@[[PACKAGE_NAME]]/config-typescript/vue.json",
3
3
  "include": [
4
4
  "auto-imports.d.ts",
5
5
  "components.d.ts",
6
6
  "env.d.ts",
7
- "typed-router.d.ts",
7
+ "route-map.d.ts",
8
8
  "src/**/*.ts",
9
9
  "src/**/*.d.ts",
10
10
  "src/**/*.vue"
@@ -16,18 +16,16 @@
16
16
  "composite": true,
17
17
  "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
18
18
  "baseUrl": ".",
19
- "lib": [
20
- "ESNext",
21
- "DOM",
22
- "DOM.Iterable"
23
- ],
24
19
  "paths": {
25
20
  "@/*": [
26
21
  "./src/*"
27
22
  ]
28
23
  },
29
24
  "types": [
30
- "unplugin-vue-router/client"
25
+ "vite/client"
26
+ ],
27
+ "customConditions": [
28
+ "development"
31
29
  ]
32
30
  }
33
- }
31
+ }
@@ -6,9 +6,6 @@
6
6
  },
7
7
  {
8
8
  "path": "./tsconfig.app.json"
9
- },
10
- {
11
- "path": "./tsconfig.vitest.json"
12
9
  }
13
10
  ]
14
- }
11
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "extends": "@[[PACKAGE_NAME]]/config-typescript/node.json",
3
+ "include": [
4
+ "vite.config.*"
5
+ ],
6
+ "compilerOptions": {
7
+ "composite": true,
8
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
9
+ "types": [
10
+ "node"
11
+ ]
12
+ }
13
+ }
@@ -1,73 +1,104 @@
1
1
  import { fileURLToPath, URL } from 'node:url';
2
2
 
3
+ import { utilsPlugin } from '@[[PACKAGE_NAME]]/utils/plugin';
4
+ import { utilsResolver } from '@[[PACKAGE_NAME]]/utils/resolver';
3
5
  import { CitrusLimeUI } from '@citruslime/ui';
6
+ import vueI18n from '@intlify/unplugin-vue-i18n/vite';
7
+ import tailwindcss from '@tailwindcss/vite';
4
8
  import vue from '@vitejs/plugin-vue';
5
9
  import autoImport from 'unplugin-auto-import/vite';
6
10
  import { VueUseComponentsResolver } from 'unplugin-vue-components/resolvers';
7
11
  import components from 'unplugin-vue-components/vite';
8
- import { VueRouterAutoImports, getPascalCaseRouteName } from 'unplugin-vue-router';
9
- import router from 'unplugin-vue-router/vite';
10
12
  import { defineConfig } from 'vite';
11
13
  import mkcert from 'vite-plugin-mkcert';
14
+ import vueDevTools from 'vite-plugin-vue-devtools';
15
+ import { VueRouterAutoImports, getPascalCaseRouteName } from 'vue-router/unplugin';
16
+ import router from 'vue-router/vite';
12
17
 
13
- export default defineConfig({
18
+ export default defineConfig(({ mode }) => ({
14
19
  plugins: [
20
+ utilsPlugin(),
21
+ tailwindcss({
22
+ optimize: {
23
+ minify: mode === 'production'
24
+ }
25
+ }),
26
+ vueI18n({
27
+ fullInstall: false,
28
+ runtimeOnly: false,
29
+ compositionOnly: true
30
+ }),
15
31
  autoImport({
16
32
  dts: true,
33
+ resolvers: [utilsResolver()],
17
34
  dirs: [
18
- 'src/router/**',
19
- 'src/state/**'
35
+ 'src/**/*.ts',
36
+ 'src/**/*.vue'
20
37
  ],
21
38
  imports: [
22
39
  '@vueuse/core',
23
40
  'pinia',
24
41
  'vue',
25
42
  'vue-i18n',
43
+ 'vue-router',
26
44
  VueRouterAutoImports,
27
45
  {
28
- from: 'vue-router/auto',
46
+ from: 'vue-router',
29
47
  imports: [
30
48
  'createRouter',
31
49
  'createWebHashHistory'
32
50
  ]
33
51
  },
34
52
  {
35
- from: 'vue-router/auto',
36
- imports: ['RouteRecordRaw'],
37
- type: true
53
+ from: 'luxon',
54
+ imports: ['DateTime']
38
55
  },
39
56
  {
40
57
  from: 'luxon',
41
- imports: ['DateTime']
58
+ imports: ['DateTimeMaybeValid'],
59
+ type: true
42
60
  }
43
61
  ],
44
62
  eslintrc: {
45
63
  enabled: true,
46
- filepath: '.eslintrc-auto-import.json',
47
- globalsPropValue: true
64
+ filepath: 'eslint-auto-imports.js',
65
+ globalsPropValue: 'readonly'
48
66
  },
49
67
  vueTemplate: true
50
68
  }),
51
69
  components({
52
70
  dts: true,
53
71
  dirs: ['src/components'],
72
+ types: [
73
+ {
74
+ from: 'vue-router',
75
+ names: [
76
+ 'RouterLink',
77
+ 'RouterView'
78
+ ]
79
+ }
80
+ ],
54
81
  resolvers: [
55
82
  VueUseComponentsResolver(),
56
83
  CitrusLimeUI()
57
84
  ]
58
85
  }),
59
86
  router({
87
+ dts: 'route-map.d.ts',
60
88
  routesFolder: 'src/pages',
61
89
  extensions: ['.vue'],
62
90
  getRouteName: getPascalCaseRouteName
63
91
  }),
64
92
  vue(),
65
- mkcert()
93
+ mkcert(),
94
+ vueDevTools({
95
+ componentInspector: false
96
+ })
66
97
  ],
67
98
  build: {
68
99
  rollupOptions: {
69
100
  output: {
70
- manualChunks (id) {
101
+ manualChunks (id: string): string | undefined {
71
102
  if (id.includes('node_modules')) {
72
103
  if (id.includes('.pnpm')) {
73
104
  return id.toString().split('node_modules/.pnpm')[1].split('/')[1].toString();
@@ -86,22 +117,21 @@ export default defineConfig({
86
117
  'vue-i18n'
87
118
  ]
88
119
  },
89
- /* eslint-disable @typescript-eslint/naming-convention */
90
- define: {
91
- __VUE_I18N_FULL_INSTALL__: true,
92
- __VUE_I18N_LEGACY_API__: false,
93
- __INTLIFY_PROD_DEVTOOLS__: false
94
- },
95
120
  resolve: {
96
121
  alias: {
97
- '@': fileURLToPath(new URL('./src', import.meta.url)),
98
- 'vue-i18n': 'vue-i18n/dist/vue-i18n.esm-bundler.js'
99
- }
122
+ '@': fileURLToPath(new URL('./src', import.meta.url))
123
+ },
124
+ conditions: mode === 'development' ?
125
+ [
126
+ 'development',
127
+ 'import',
128
+ 'module',
129
+ 'browser',
130
+ 'default'
131
+ ] :
132
+ undefined
100
133
  },
101
134
  server: {
102
- open: true,
103
- port: '[[FRONTEND_PORT]]',
104
135
  proxy: '[[PROXY]]'
105
136
  }
106
- /* eslint-enable @typescript-eslint/naming-convention */
107
- });
137
+ }));
@@ -1,16 +1,17 @@
1
1
  {
2
2
  "name": "[[PACKAGE_NAME]]",
3
- "type": "module",
4
- "version": "0.0.0",
5
3
  "private": true,
4
+ "type": "module",
5
+ "engines": {
6
+ "node": ">=24"
7
+ },
8
+ "packageManager": "pnpm@10.29.3",
6
9
  "scripts": {
7
- "dev": "vite",
8
- "build": "run-s build-only type-check",
9
- "build-only": "vite build",
10
- "type-check": "vue-tsc --noEmit",
11
- "serve": "vite preview",
12
- "lint": "eslint . --fix --cache && stylelint **/*.{css,vue} --fix --cache",
13
- "pre-commit-lint": "[[PACKAGE_MANAGER]] lint-staged",
14
- "prepare": "cd [[ROOT_DIR]] && husky"
10
+ "dev": "turbo run dev",
11
+ "build": "turbo run build",
12
+ "lint": "turbo run lint",
13
+ "test": "turbo run test",
14
+ "typecheck": "turbo run typecheck",
15
+ "prepare": "cd [[GIT_ROOT]] && husky"
15
16
  }
16
17
  }
@@ -0,0 +1,4 @@
1
+ /* eslint-disable @typescript-eslint/naming-convention */
2
+ export default {
3
+ '*.{js,cjs,mjs}': ['eslint --fix']
4
+ };
@@ -0,0 +1 @@
1
+ export { default } from '@citruslime/config/eslint';
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "@[[PACKAGE_NAME]]/config-eslint",
3
+ "type": "module",
4
+ "version": "0.0.0",
5
+ "private": true,
6
+ "main": "eslint.config.js",
7
+ "exports": {
8
+ ".": "./eslint.config.js"
9
+ }
10
+ }
@@ -0,0 +1,4 @@
1
+ /* eslint-disable @typescript-eslint/naming-convention */
2
+ export default {
3
+ '*.{js,cjs,mjs}': ['eslint --fix']
4
+ };
@@ -0,0 +1 @@
1
+ export { default } from '@[[PACKAGE_NAME]]/config-eslint';
@@ -0,0 +1,13 @@
1
+ {
2
+ "name": "@[[PACKAGE_NAME]]/config-stylelint",
3
+ "type": "module",
4
+ "version": "0.0.0",
5
+ "private": true,
6
+ "main": "index.js",
7
+ "exports": {
8
+ ".": "./index.js"
9
+ },
10
+ "devDependencies": {
11
+ "@[[PACKAGE_NAME]]/config-eslint": "workspace:*"
12
+ }
13
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/tsconfig",
3
+ "extends": "@tsconfig/node24/tsconfig.json",
4
+ "compilerOptions": {
5
+ "module": "ESNext",
6
+ "moduleResolution": "bundler",
7
+ "resolveJsonModule": true,
8
+ "isolatedModules": true,
9
+ "forceConsistentCasingInFileNames": true,
10
+ "preserveWatchOutput": true
11
+ },
12
+ "exclude": [
13
+ "node_modules",
14
+ "dist",
15
+ ".turbo"
16
+ ]
17
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "@[[PACKAGE_NAME]]/config-typescript",
3
+ "version": "0.0.0",
4
+ "private": true,
5
+ "exports": {
6
+ "./node.json": "./node.json",
7
+ "./vue.json": "./vue.json"
8
+ }
9
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/tsconfig",
3
+ "extends": "@vue/tsconfig/tsconfig.dom.json",
4
+ "compilerOptions": {
5
+ "isolatedModules": true,
6
+ "preserveWatchOutput": true,
7
+ "lib": [
8
+ "ES2023",
9
+ "DOM",
10
+ "DOM.Iterable"
11
+ ]
12
+ },
13
+ "exclude": [
14
+ "node_modules",
15
+ "dist",
16
+ ".turbo"
17
+ ]
18
+ }