create-lik-app 1.0.0 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +8 -7
- package/dist/index.mjs +31 -31
- package/package.json +6 -7
- package/templates/.gitignore +1 -0
- package/templates/template-react/env/.env +0 -0
- package/templates/template-react/env/.env.development +1 -0
- package/templates/template-react/env/.env.production +1 -0
- package/templates/template-react/eslint.config.mjs +1 -1
- package/templates/template-react/package.json +1 -0
- package/templates/template-react/plugins/index.ts +24 -0
- package/templates/template-react/src/views/Home/index.tsx +7 -1
- package/templates/template-react/tsconfig.app.json +1 -1
- package/templates/template-react/tsconfig.node.json +6 -1
- package/templates/template-react/types/auto-imports.d.ts +47 -0
- package/templates/template-react/types/vite-env.d.ts +9 -0
- package/templates/template-react/vite.config.ts +5 -15
- package/templates/template-vue/.husky/commit-msg +1 -0
- package/templates/template-vue/.husky/lintstagedrc.cjs +15 -0
- package/templates/template-vue/.husky/pre-commit +10 -0
- package/templates/template-vue/.prettierrc.json +6 -0
- package/templates/template-vue/.vscode/extensions.json +8 -0
- package/templates/template-vue/README.md +39 -0
- package/templates/template-vue/_gitignore +30 -0
- package/templates/template-vue/commitlint.config.mjs +33 -0
- package/templates/template-vue/env/.env +0 -0
- package/templates/template-vue/env/.env.development +0 -0
- package/templates/template-vue/env/.env.production +0 -0
- package/templates/template-vue/env/.env.test +1 -0
- package/templates/template-vue/eslint.config.js +24 -0
- package/templates/template-vue/index.html +13 -0
- package/templates/template-vue/package.json +45 -0
- package/templates/template-vue/plugins/index.ts +28 -0
- package/templates/template-vue/public/lic.svg +1263 -0
- package/templates/template-vue/src/App.vue +87 -0
- package/templates/template-vue/src/assets/base.css +86 -0
- package/templates/template-vue/src/assets/logo.svg +1 -0
- package/templates/template-vue/src/assets/main.css +35 -0
- package/templates/template-vue/src/components/HelloWorld.vue +43 -0
- package/templates/template-vue/src/components/TheWelcome.vue +121 -0
- package/templates/template-vue/src/components/WelcomeItem.vue +87 -0
- package/templates/template-vue/src/components/icons/IconCommunity.vue +12 -0
- package/templates/template-vue/src/components/icons/IconDocumentation.vue +12 -0
- package/templates/template-vue/src/components/icons/IconEcosystem.vue +12 -0
- package/templates/template-vue/src/components/icons/IconSupport.vue +12 -0
- package/templates/template-vue/src/components/icons/IconTooling.vue +19 -0
- package/templates/template-vue/src/main.ts +14 -0
- package/templates/template-vue/src/router/index.ts +23 -0
- package/templates/template-vue/src/stores/index.ts +8 -0
- package/templates/template-vue/src/stores/module/counter.ts +12 -0
- package/templates/template-vue/src/views/AboutView.vue +15 -0
- package/templates/template-vue/src/views/HomeView.vue +7 -0
- package/templates/template-vue/tsconfig.app.json +13 -0
- package/templates/template-vue/tsconfig.json +11 -0
- package/templates/template-vue/tsconfig.node.json +19 -0
- package/templates/template-vue/types/auto-imports.d.ts +309 -0
- package/templates/template-vue/types/components.d.ts +21 -0
- package/templates/template-vue/types/env.d.ts +9 -0
- package/templates/template-vue/vite.config.ts +16 -0
- package/templates/template-react/src/vite-env.d.ts +0 -1
package/package.json
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
{
|
2
2
|
"name": "create-lik-app",
|
3
|
-
"version": "1.0.
|
3
|
+
"version": "1.0.2",
|
4
4
|
"type": "module",
|
5
|
-
"license": "
|
5
|
+
"license": "MIT",
|
6
6
|
"author": "licheung228 <licheung228@163.com>",
|
7
7
|
"bin": {
|
8
8
|
"create-lik-app": "index.js"
|
@@ -15,11 +15,6 @@
|
|
15
15
|
"templates/**"
|
16
16
|
],
|
17
17
|
"description": "create command for licheung",
|
18
|
-
"scripts": {
|
19
|
-
"build": "unbuild",
|
20
|
-
"update-templates": "node scripts/update.mjs",
|
21
|
-
"prepublishOnly": "pnpm build && pnpm update-templates"
|
22
|
-
},
|
23
18
|
"keywords": [
|
24
19
|
"create",
|
25
20
|
"vite vue project",
|
@@ -35,5 +30,9 @@
|
|
35
30
|
"picocolors": "^1.1.1",
|
36
31
|
"prompts": "^2.4.2",
|
37
32
|
"unbuild": "^2.0.0"
|
33
|
+
},
|
34
|
+
"scripts": {
|
35
|
+
"build": "unbuild",
|
36
|
+
"update:templates": "node scripts/update.mjs"
|
38
37
|
}
|
39
38
|
}
|
@@ -0,0 +1 @@
|
|
1
|
+
*/node_modules
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
VITE_APP_DOMAIN="https://api.example.com"
|
@@ -0,0 +1 @@
|
|
1
|
+
VITE_APP_DOMAIN="https://api.example.com"
|
@@ -23,7 +23,7 @@ export default tseslint.config(
|
|
23
23
|
rules: {
|
24
24
|
'prettier/prettier': ['error', prettierConfig],
|
25
25
|
'no-useless-escape': 'error',
|
26
|
-
'no-undef': 'error',
|
26
|
+
// 'no-undef': 'error', // for unplugin-auto-import
|
27
27
|
'no-unused-vars': 'error',
|
28
28
|
'@typescript-eslint/consistent-type-imports': 'error', // 要求 import type
|
29
29
|
'@typescript-eslint/no-use-before-define': 'error',
|
@@ -0,0 +1,24 @@
|
|
1
|
+
import react from '@vitejs/plugin-react'
|
2
|
+
import unocss from 'unocss/vite'
|
3
|
+
import type { PluginOption } from 'vite'
|
4
|
+
import AutoImport from 'unplugin-auto-import/vite'
|
5
|
+
|
6
|
+
export const createPlugins = (): PluginOption[] => [
|
7
|
+
react({
|
8
|
+
babel: {
|
9
|
+
plugins: [
|
10
|
+
['@babel/plugin-proposal-decorators', { legacy: true }]
|
11
|
+
// ['@babel/plugin-proposal-class-properties', { loose: true }]
|
12
|
+
]
|
13
|
+
}
|
14
|
+
}),
|
15
|
+
unocss(),
|
16
|
+
AutoImport({
|
17
|
+
include: [
|
18
|
+
/\.[tj]sx?$/ // .ts, .tsx, .js, .jsx
|
19
|
+
],
|
20
|
+
imports: ['react', 'react-router-dom'],
|
21
|
+
// 为true时在项目根目录自动创建
|
22
|
+
dts: 'types/auto-imports.d.ts'
|
23
|
+
})
|
24
|
+
]
|
@@ -23,6 +23,8 @@ const Button: FC<{ target: 'vite' | 'react'; disabled: boolean }> = ({
|
|
23
23
|
}
|
24
24
|
|
25
25
|
const Home: FC = observer(() => {
|
26
|
+
const [state, setState] = useState(0)
|
27
|
+
|
26
28
|
return (
|
27
29
|
<div
|
28
30
|
className={
|
@@ -49,8 +51,12 @@ const Home: FC = observer(() => {
|
|
49
51
|
<React />
|
50
52
|
<Button target="react" disabled={favoriteStore.favorite === 'react'} />
|
51
53
|
</div>
|
52
|
-
<div
|
54
|
+
<div
|
55
|
+
className="absolute translate-x-[50%] right-[50%] top-[10%] cursor-pointer hover:filter-drop-shadow-2xl"
|
56
|
+
onClick={() => setState((v) => ++v)}
|
57
|
+
>
|
53
58
|
<Lic favorite={favoriteStore.favorite} />
|
59
|
+
{state}
|
54
60
|
</div>
|
55
61
|
</div>
|
56
62
|
)
|
@@ -0,0 +1,47 @@
|
|
1
|
+
/* eslint-disable */
|
2
|
+
/* prettier-ignore */
|
3
|
+
// @ts-nocheck
|
4
|
+
// noinspection JSUnusedGlobalSymbols
|
5
|
+
// Generated by unplugin-auto-import
|
6
|
+
// biome-ignore lint: disable
|
7
|
+
export {}
|
8
|
+
declare global {
|
9
|
+
const Link: typeof import('react-router-dom')['Link']
|
10
|
+
const NavLink: typeof import('react-router-dom')['NavLink']
|
11
|
+
const Navigate: typeof import('react-router-dom')['Navigate']
|
12
|
+
const Outlet: typeof import('react-router-dom')['Outlet']
|
13
|
+
const Route: typeof import('react-router-dom')['Route']
|
14
|
+
const Routes: typeof import('react-router-dom')['Routes']
|
15
|
+
const createRef: typeof import('react')['createRef']
|
16
|
+
const forwardRef: typeof import('react')['forwardRef']
|
17
|
+
const lazy: typeof import('react')['lazy']
|
18
|
+
const memo: typeof import('react')['memo']
|
19
|
+
const startTransition: typeof import('react')['startTransition']
|
20
|
+
const useCallback: typeof import('react')['useCallback']
|
21
|
+
const useContext: typeof import('react')['useContext']
|
22
|
+
const useDebugValue: typeof import('react')['useDebugValue']
|
23
|
+
const useDeferredValue: typeof import('react')['useDeferredValue']
|
24
|
+
const useEffect: typeof import('react')['useEffect']
|
25
|
+
const useHref: typeof import('react-router-dom')['useHref']
|
26
|
+
const useId: typeof import('react')['useId']
|
27
|
+
const useImperativeHandle: typeof import('react')['useImperativeHandle']
|
28
|
+
const useInRouterContext: typeof import('react-router-dom')['useInRouterContext']
|
29
|
+
const useInsertionEffect: typeof import('react')['useInsertionEffect']
|
30
|
+
const useLayoutEffect: typeof import('react')['useLayoutEffect']
|
31
|
+
const useLinkClickHandler: typeof import('react-router-dom')['useLinkClickHandler']
|
32
|
+
const useLocation: typeof import('react-router-dom')['useLocation']
|
33
|
+
const useMemo: typeof import('react')['useMemo']
|
34
|
+
const useNavigate: typeof import('react-router-dom')['useNavigate']
|
35
|
+
const useNavigationType: typeof import('react-router-dom')['useNavigationType']
|
36
|
+
const useOutlet: typeof import('react-router-dom')['useOutlet']
|
37
|
+
const useOutletContext: typeof import('react-router-dom')['useOutletContext']
|
38
|
+
const useParams: typeof import('react-router-dom')['useParams']
|
39
|
+
const useReducer: typeof import('react')['useReducer']
|
40
|
+
const useRef: typeof import('react')['useRef']
|
41
|
+
const useResolvedPath: typeof import('react-router-dom')['useResolvedPath']
|
42
|
+
const useRoutes: typeof import('react-router-dom')['useRoutes']
|
43
|
+
const useSearchParams: typeof import('react-router-dom')['useSearchParams']
|
44
|
+
const useState: typeof import('react')['useState']
|
45
|
+
const useSyncExternalStore: typeof import('react')['useSyncExternalStore']
|
46
|
+
const useTransition: typeof import('react')['useTransition']
|
47
|
+
}
|
@@ -1,22 +1,12 @@
|
|
1
1
|
import { defineConfig } from 'vite'
|
2
|
-
|
3
|
-
import unocss from 'unocss/vite'
|
2
|
+
|
4
3
|
import path from 'node:path'
|
5
4
|
import process from 'node:process'
|
5
|
+
import { createPlugins } from './plugins'
|
6
6
|
|
7
7
|
// https://vite.dev/config/
|
8
|
-
export default defineConfig({
|
9
|
-
plugins:
|
10
|
-
react({
|
11
|
-
babel: {
|
12
|
-
plugins: [
|
13
|
-
['@babel/plugin-proposal-decorators', { legacy: true }]
|
14
|
-
// ['@babel/plugin-proposal-class-properties', { loose: true }]
|
15
|
-
]
|
16
|
-
}
|
17
|
-
}),
|
18
|
-
unocss()
|
19
|
-
],
|
8
|
+
export default defineConfig(() => ({
|
9
|
+
plugins: createPlugins(),
|
20
10
|
resolve: {
|
21
11
|
alias: {
|
22
12
|
'@': path.resolve(process.cwd(), '/src')
|
@@ -25,4 +15,4 @@ export default defineConfig({
|
|
25
15
|
server: {
|
26
16
|
port: 8220
|
27
17
|
}
|
28
|
-
})
|
18
|
+
}))
|
@@ -0,0 +1 @@
|
|
1
|
+
npx --no -- commitlint --edit $1
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module.exports = {
|
2
|
+
'*.{js,jsx,ts,tsx}': ['eslint --fix', 'prettier --write'],
|
3
|
+
'{!(package)*.json,*.code-snippets,.!(browserslist)*rc}': [
|
4
|
+
'prettier --parser json --write',
|
5
|
+
],
|
6
|
+
'*.vue': [
|
7
|
+
'eslint --fix',
|
8
|
+
'prettier --write',
|
9
|
+
// 'stylelint --fix'
|
10
|
+
],
|
11
|
+
'package.json': ['prettier --write'],
|
12
|
+
// '*.{scss,less,styl,css,html}': ['stylelint --fix', 'prettier --write'],
|
13
|
+
'*.md': ['prettier --write'],
|
14
|
+
'*.hbs': ['prettier --write'],
|
15
|
+
}
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# template-vue
|
2
|
+
|
3
|
+
This template should help get you started developing with Vue 3 in Vite.
|
4
|
+
|
5
|
+
## Recommended IDE Setup
|
6
|
+
|
7
|
+
[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur).
|
8
|
+
|
9
|
+
## Type Support for `.vue` Imports in TS
|
10
|
+
|
11
|
+
TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) to make the TypeScript language service aware of `.vue` types.
|
12
|
+
|
13
|
+
## Customize configuration
|
14
|
+
|
15
|
+
See [Vite Configuration Reference](https://vite.dev/config/).
|
16
|
+
|
17
|
+
## Project Setup
|
18
|
+
|
19
|
+
```sh
|
20
|
+
pnpm install
|
21
|
+
```
|
22
|
+
|
23
|
+
### Compile and Hot-Reload for Development
|
24
|
+
|
25
|
+
```sh
|
26
|
+
pnpm dev
|
27
|
+
```
|
28
|
+
|
29
|
+
### Type-Check, Compile and Minify for Production
|
30
|
+
|
31
|
+
```sh
|
32
|
+
pnpm build
|
33
|
+
```
|
34
|
+
|
35
|
+
### Lint with [ESLint](https://eslint.org/)
|
36
|
+
|
37
|
+
```sh
|
38
|
+
pnpm lint
|
39
|
+
```
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# Logs
|
2
|
+
logs
|
3
|
+
*.log
|
4
|
+
npm-debug.log*
|
5
|
+
yarn-debug.log*
|
6
|
+
yarn-error.log*
|
7
|
+
pnpm-debug.log*
|
8
|
+
lerna-debug.log*
|
9
|
+
|
10
|
+
node_modules
|
11
|
+
.DS_Store
|
12
|
+
dist
|
13
|
+
dist-ssr
|
14
|
+
coverage
|
15
|
+
*.local
|
16
|
+
|
17
|
+
/cypress/videos/
|
18
|
+
/cypress/screenshots/
|
19
|
+
|
20
|
+
# Editor directories and files
|
21
|
+
.vscode/*
|
22
|
+
!.vscode/extensions.json
|
23
|
+
.idea
|
24
|
+
*.suo
|
25
|
+
*.ntvs*
|
26
|
+
*.njsproj
|
27
|
+
*.sln
|
28
|
+
*.sw?
|
29
|
+
|
30
|
+
*.tsbuildinfo
|
@@ -0,0 +1,33 @@
|
|
1
|
+
export default {
|
2
|
+
extends: ['@commitlint/config-conventional'],
|
3
|
+
rules: {
|
4
|
+
'type-enum': [
|
5
|
+
// 确保提交信息的类型必须是预定义的类型之一。
|
6
|
+
2, // 错误级别,2 表示严重错误,提交将被拒绝。
|
7
|
+
'always', // 始终应用此规则。
|
8
|
+
[
|
9
|
+
'feat', // 新功能(feature)
|
10
|
+
'fix', // 修补bug
|
11
|
+
'docs', // 文档(documentation)
|
12
|
+
'style', // 格式、样式(不影响代码运行的变动)
|
13
|
+
'refactor', // 重构(即不是新增功能,也不是修改BUG的代码)
|
14
|
+
'perf', // 优化相关,比如提升性能、体验
|
15
|
+
'test', // 添加测试
|
16
|
+
'ci', // 持续集成修改
|
17
|
+
'chore', // 构建过程或辅助工具的变动
|
18
|
+
'revert', // 回滚到上一个版本
|
19
|
+
'workflow', // 工作流改进
|
20
|
+
'mod', // 不确定分类的修改
|
21
|
+
'wip', // 开发中
|
22
|
+
'types', // 类型修改
|
23
|
+
'release', // 版本发布
|
24
|
+
],
|
25
|
+
],
|
26
|
+
'subject-full-stop': [
|
27
|
+
// 确保提交信息的 subject 部分不以句点(.)结尾。
|
28
|
+
0, // 错误级别,0 表示忽略此规则,不进行检查。
|
29
|
+
'never', // 从不应用此规则。
|
30
|
+
],
|
31
|
+
'subject-case': [0, 'never'], // 确保提交信息的 subject 部分不强制特定的大小写格式。
|
32
|
+
},
|
33
|
+
}
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
|
@@ -0,0 +1,24 @@
|
|
1
|
+
import pluginVue from 'eslint-plugin-vue'
|
2
|
+
import vueTsEslintConfig from '@vue/eslint-config-typescript'
|
3
|
+
import skipFormatting from '@vue/eslint-config-prettier/skip-formatting'
|
4
|
+
|
5
|
+
export default [
|
6
|
+
{
|
7
|
+
name: 'lint',
|
8
|
+
files: ['**/*.{ts,mts,tsx,vue}'],
|
9
|
+
},
|
10
|
+
|
11
|
+
{
|
12
|
+
name: 'lint-ignore',
|
13
|
+
ignores: ['**/dist/**', 'node_modules', '**/dist-ssr/**', '**/coverage/**'],
|
14
|
+
},
|
15
|
+
{
|
16
|
+
name: 'lint-rules',
|
17
|
+
rules: {
|
18
|
+
'@typescript-eslint/consistent-type-imports': 'error', // 要求 import type
|
19
|
+
},
|
20
|
+
},
|
21
|
+
...pluginVue.configs['flat/essential'],
|
22
|
+
...vueTsEslintConfig(),
|
23
|
+
skipFormatting,
|
24
|
+
]
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html lang="">
|
3
|
+
<head>
|
4
|
+
<meta charset="UTF-8" />
|
5
|
+
<link rel="icon" href="/lic.svg" />
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
7
|
+
<title>Lik-Vue-App</title>
|
8
|
+
</head>
|
9
|
+
<body>
|
10
|
+
<div id="app"></div>
|
11
|
+
<script type="module" src="/src/main.ts"></script>
|
12
|
+
</body>
|
13
|
+
</html>
|
@@ -0,0 +1,45 @@
|
|
1
|
+
{
|
2
|
+
"name": "template-vue",
|
3
|
+
"version": "0.0.0",
|
4
|
+
"private": true,
|
5
|
+
"type": "module",
|
6
|
+
"scripts": {
|
7
|
+
"dev": "vite",
|
8
|
+
"build": "run-p type-check \"build-only {@}\" --",
|
9
|
+
"preview": "vite preview",
|
10
|
+
"build-only": "vite build",
|
11
|
+
"type-check": "vue-tsc --build",
|
12
|
+
"lint": "lint-staged -c ./.husky/lintstagedrc.cjs",
|
13
|
+
"prepare": "husky install"
|
14
|
+
},
|
15
|
+
"dependencies": {
|
16
|
+
"@vueuse/core": "^12.0.0",
|
17
|
+
"pinia": "^2.2.6",
|
18
|
+
"vue": "^3.5.13",
|
19
|
+
"vue-router": "^4.4.5"
|
20
|
+
},
|
21
|
+
"devDependencies": {
|
22
|
+
"@commitlint/cli": "^19.6.0",
|
23
|
+
"@commitlint/config-conventional": "^19.6.0",
|
24
|
+
"@tsconfig/node22": "^22.0.0",
|
25
|
+
"@types/node": "^22.9.3",
|
26
|
+
"@vitejs/plugin-vue": "^5.2.1",
|
27
|
+
"@vitejs/plugin-vue-jsx": "^4.1.1",
|
28
|
+
"@vue/eslint-config-prettier": "^10.1.0",
|
29
|
+
"@vue/eslint-config-typescript": "^14.1.3",
|
30
|
+
"@vue/tsconfig": "^0.7.0",
|
31
|
+
"eslint": "^9.14.0",
|
32
|
+
"eslint-plugin-vue": "^9.30.0",
|
33
|
+
"husky": "^9.1.7",
|
34
|
+
"lint-staged": "^15.2.10",
|
35
|
+
"npm-run-all2": "^7.0.1",
|
36
|
+
"pinia-plugin-persistedstate": "^4.1.3",
|
37
|
+
"prettier": "^3.3.3",
|
38
|
+
"typescript": "~5.6.3",
|
39
|
+
"unplugin-auto-import": "^0.18.6",
|
40
|
+
"unplugin-vue-components": "^0.27.5",
|
41
|
+
"vite": "^6.0.1",
|
42
|
+
"vite-plugin-vue-devtools": "^7.6.5",
|
43
|
+
"vue-tsc": "^2.1.10"
|
44
|
+
}
|
45
|
+
}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
import vue from '@vitejs/plugin-vue'
|
2
|
+
import vueJsx from '@vitejs/plugin-vue-jsx'
|
3
|
+
import vueDevTools from 'vite-plugin-vue-devtools'
|
4
|
+
import AutoImport from 'unplugin-auto-import/vite'
|
5
|
+
import Components from 'unplugin-vue-components/vite'
|
6
|
+
export const createPlugins = () => [
|
7
|
+
vue(),
|
8
|
+
vueJsx(),
|
9
|
+
vueDevTools(),
|
10
|
+
AutoImport({
|
11
|
+
include: [
|
12
|
+
/\.vue$/,
|
13
|
+
/\.vue\?vue/, // .vue
|
14
|
+
],
|
15
|
+
imports: ['vue', 'vue-router', 'pinia', '@vueuse/core'],
|
16
|
+
// 为true时在项目根目录自动创建
|
17
|
+
dts: 'types/auto-imports.d.ts',
|
18
|
+
}),
|
19
|
+
// 按需加载组件
|
20
|
+
Components({
|
21
|
+
// 自动加载的组件目录,默认值为 ['src/components']
|
22
|
+
dirs: ['src/components'],
|
23
|
+
// 组件名称包含目录,防止同名组件冲突
|
24
|
+
directoryAsNamespace: true,
|
25
|
+
// 指定类型声明文件,为true时在项目根目录创建
|
26
|
+
dts: 'types/components.d.ts',
|
27
|
+
}),
|
28
|
+
]
|