create-lik-app 1.0.0 → 1.0.2
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.
- 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
|
+
]
|