feat(build): 新增github action自动化部署 (#13)

This commit is contained in:
Dawn
2024-11-09 16:01:25 +08:00
committed by GitHub
parent bdcade1703
commit c7f916541f
30 changed files with 640 additions and 357 deletions

View File

@@ -1,56 +1,56 @@
module.exports = {
// 运行环境
env: {
browser: true, // 浏览器
es6: true, // es6语法
jest: true,
},
parser: 'vue-eslint-parser',
parserOptions: {
ecmaVersion: 'latest',
parser: '@typescript-eslint/parser',
sourceType: 'module',
jsxPragma: 'React',
ecmaFeatures: {
jsx: true,
},
},
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:vue/vue3-essential',
'plugin:prettier/recommended',
],
overrides: [
{
env: {
node: true,
},
files: ['.eslintrc.{js,cjs}'],
parserOptions: {
sourceType: 'script',
},
},
],
plugins: ['@typescript-eslint', 'vue'],
rules: {
'@typescript-eslint/no-non-null-assertion': 'off',
/** 允许ts使用命名空间 */
'@typescript-eslint/no-namespace': 'off',
/**
* 使用新vue3.3的defineProps解构语法需要关闭这个校验
* eslint-plugin-vue新版本已废弃 vue/no-setup-props-destructure,如果新版本eslint-plugin-vue
* 需要改成vue/no-setup-props-reactivity-loss规则
* */
'vue/no-setup-props-destructure': 'off',
'no-undef': 'off',
'no-var': 'error', // 不能使用var
'no-multiple-empty-lines': ['warn', { max: 2 }], // 不允许多个空行
quotes: [1, 'single'], //引号类型 `` "" ''
semi: ['error', 'never'], // 不允许在末尾加分号
'vue/multi-word-component-names': 'off', //关闭组件命名规则
'@typescript-eslint/no-explicit-any': 'off', // 关闭any校验
'no-redeclare': 2, //禁止重复声明变量
'eol-last': 'off', // 关闭行尾符linebreak-style的校验
},
// 运行环境
env: {
browser: true, // 浏览器
es6: true, // es6语法
jest: true
},
parser: 'vue-eslint-parser',
parserOptions: {
ecmaVersion: 'latest',
parser: '@typescript-eslint/parser',
sourceType: 'module',
jsxPragma: 'React',
ecmaFeatures: {
jsx: true
}
},
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:vue/vue3-essential',
'plugin:prettier/recommended'
],
overrides: [
{
env: {
node: true
},
files: ['.eslintrc.{js,cjs}'],
parserOptions: {
sourceType: 'script'
}
}
],
plugins: ['@typescript-eslint', 'vue'],
rules: {
'@typescript-eslint/no-non-null-assertion': 'off',
/** 允许ts使用命名空间 */
'@typescript-eslint/no-namespace': 'off',
/**
* 使用新vue3.3的defineProps解构语法需要关闭这个校验
* eslint-plugin-vue新版本已废弃 vue/no-setup-props-destructure,如果新版本eslint-plugin-vue
* 需要改成vue/no-setup-props-reactivity-loss规则
* */
'vue/no-setup-props-destructure': 'off',
'no-undef': 'off',
'no-var': 'error', // 不能使用var
'no-multiple-empty-lines': ['warn', { max: 2 }], // 不允许多个空行
quotes: [1, 'single'], //引号类型 `` "" ''
semi: ['error', 'never'], // 不允许在末尾加分号
'vue/multi-word-component-names': 'off', //关闭组件命名规则
'@typescript-eslint/no-explicit-any': 'off', // 关闭any校验
'no-redeclare': 2, //禁止重复声明变量
'eol-last': 'off' // 关闭行尾符linebreak-style的校验
}
}

View File

@@ -21,11 +21,39 @@ jobs:
- name: Install pnpm
run: npm install -g pnpm@9.2.0
# 添加 dependencies 缓存
- name: Cache dependencies
uses: actions/cache@v4
with:
path: ./node_modules
key: ${{ runner.os }}-node-modules-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-node-modules-
- name: Install dependencies
run: pnpm install
# 添加打包步骤
- name: Build
run: pnpm run build
# 打包镜像推送到阿里云容器镜像服务
- name: Build the Docker image
run: |
docker login --username=${{ secrets.DOCKER_USERNAME }} registry.cn-hongkong.aliyuncs.com --password=${{ secrets.DOCKER_PASSWORD }}
docker build -t hula-web:latest .
docker tag hula-web registry.cn-hongkong.aliyuncs.com/nongyehong/hula-web:latest
docker push registry.cn-hongkong.aliyuncs.com/nongyehong/hula-web:latest
- name: ssh docker login # 使用appleboy/ssh-action@master登录服务器执行拉取镜像脚本服务器ip、用户名、密码配置方式同容器镜像服务配置方式一样
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USERNAME }}
password: ${{ secrets.SSH_PASSWORD }}
script: cd /home/hula-bak && sh hula-web-deploy.sh ${{ secrets.DOCKER_USERNAME }} ${{ secrets.DOCKER_PASSWORD }}
- name: Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
run: npx semantic-release
run: npx semantic-release

1
.gitignore vendored
View File

@@ -16,4 +16,3 @@ logs
# Misc
.DS_Store
.fleet
.idea

8
.idea/.gitignore generated vendored Normal file
View File

@@ -0,0 +1,8 @@
# 默认忽略的文件
/shelf/
/workspace.xml
# 基于编辑器的 HTTP 客户端请求
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

8
.idea/HuLa-Nuxt.iml generated Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="EMPTY_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

1
.idea/OpenSCAIdentity generated Normal file
View File

@@ -0,0 +1 @@
7d32847f-c915-4f8f-8ee5-82a8f43477e4

62
.idea/codeStyles/Project.xml generated Normal file
View File

@@ -0,0 +1,62 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<option name="LINE_SEPARATOR" value="&#10;" />
<HTMLCodeStyleSettings>
<option name="HTML_SPACE_INSIDE_EMPTY_TAG" value="true" />
</HTMLCodeStyleSettings>
<JSCodeStyleSettings version="0">
<option name="USE_SEMICOLON_AFTER_STATEMENT" value="false" />
<option name="FORCE_SEMICOLON_STYLE" value="true" />
<option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
<option name="USE_DOUBLE_QUOTES" value="false" />
<option name="FORCE_QUOTE_STYlE" value="true" />
<option name="ENFORCE_TRAILING_COMMA" value="Remove" />
<option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
<option name="SPACES_WITHIN_IMPORTS" value="true" />
</JSCodeStyleSettings>
<TypeScriptCodeStyleSettings version="0">
<option name="USE_SEMICOLON_AFTER_STATEMENT" value="false" />
<option name="FORCE_SEMICOLON_STYLE" value="true" />
<option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
<option name="USE_DOUBLE_QUOTES" value="false" />
<option name="FORCE_QUOTE_STYlE" value="true" />
<option name="ENFORCE_TRAILING_COMMA" value="Remove" />
<option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
<option name="SPACES_WITHIN_IMPORTS" value="true" />
</TypeScriptCodeStyleSettings>
<VueCodeStyleSettings>
<option name="INTERPOLATION_NEW_LINE_AFTER_START_DELIMITER" value="false" />
<option name="INTERPOLATION_NEW_LINE_BEFORE_END_DELIMITER" value="false" />
</VueCodeStyleSettings>
<codeStyleSettings language="HTML">
<option name="SOFT_MARGINS" value="120" />
<indentOptions>
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="2" />
<option name="TAB_SIZE" value="2" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="JavaScript">
<option name="SOFT_MARGINS" value="120" />
<indentOptions>
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="2" />
<option name="TAB_SIZE" value="2" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="TypeScript">
<option name="SOFT_MARGINS" value="120" />
<indentOptions>
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="2" />
<option name="TAB_SIZE" value="2" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="Vue">
<option name="SOFT_MARGINS" value="120" />
<indentOptions>
<option name="CONTINUATION_INDENT_SIZE" value="2" />
</indentOptions>
</codeStyleSettings>
</code_scheme>
</component>

5
.idea/codeStyles/codeStyleConfig.xml generated Normal file
View File

@@ -0,0 +1,5 @@
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
</state>
</component>

6
.idea/git_toolbox_blame.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GitToolBoxBlameSettings">
<option name="version" value="2" />
</component>
</project>

5
.idea/icon.svg generated Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 136 KiB

View File

@@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
</profile>
</component>

8
.idea/modules.xml generated Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/HuLa-Nuxt.iml" filepath="$PROJECT_DIR$/.idea/HuLa-Nuxt.iml" />
</modules>
</component>
</project>

6
.idea/prettier.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="PrettierConfiguration">
<option name="myConfigurationMode" value="AUTOMATIC" />
</component>
</project>

6
.idea/vcs.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

View File

@@ -1,14 +1,14 @@
{
"singleQuote": true,
"semi": false,
"printWidth": 120,
"useTabs": false,
"tabWidth": 2,
"jsxSingleQuote": false,
"trailingComma": "none",
"bracketSpacing": true,
"arrowParens": "always",
"bracketSameLine": true,
"jsxBracketSameLine": true,
"endOfLine": "lf"
"singleQuote": true,
"semi": false,
"printWidth": 120,
"useTabs": false,
"tabWidth": 2,
"jsxSingleQuote": false,
"trailingComma": "none",
"bracketSpacing": true,
"arrowParens": "always",
"bracketSameLine": true,
"jsxBracketSameLine": true,
"endOfLine": "lf"
}

View File

@@ -1,20 +1,17 @@
{
"branch": "master",
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"@semantic-release/changelog",
"@semantic-release/npm",
[
"@semantic-release/git",
{
"assets": [
"package.json",
"CHANGELOG.md"
],
"message": "chore: 发布 ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
}
],
"@semantic-release/github"
]
}
"branch": "master",
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"@semantic-release/changelog",
"@semantic-release/npm",
[
"@semantic-release/git",
{
"assets": ["package.json", "CHANGELOG.md"],
"message": "chore: 发布 ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
}
],
"@semantic-release/github"
]
}

18
.vscode/launch.json vendored Normal file
View File

@@ -0,0 +1,18 @@
{
"configurations": [
{
"type": "node-terminal",
"name": "运行脚本: dev",
"request": "launch",
"command": "pnpm run dev",
"cwd": "${workspaceFolder}"
},
{
"type": "node-terminal",
"name": "运行脚本: build",
"request": "launch",
"command": "pnpm run build",
"cwd": "${workspaceFolder}"
}
]
}

3
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,3 @@
{
"typescript.tsdk": "node_modules/typescript/lib"
}

View File

@@ -1,20 +1,17 @@
## [1.3.1](https://github.com/HuLaSpark/HuLa-Nuxt/compare/v1.3.0...v1.3.1) (2024-11-08)
### Performance Improvements
* **layout:** :zap: 优化主页下载链接提示 ([#12](https://github.com/HuLaSpark/HuLa-Nuxt/issues/12)) ([7736ddb](https://github.com/HuLaSpark/HuLa-Nuxt/commit/7736ddbe0ed95082a1301f6c9dc3ba1842033333)), closes [#6](https://github.com/HuLaSpark/HuLa-Nuxt/issues/6)
- **layout:** :zap: 优化主页下载链接提示 ([#12](https://github.com/HuLaSpark/HuLa-Nuxt/issues/12)) ([7736ddb](https://github.com/HuLaSpark/HuLa-Nuxt/commit/7736ddbe0ed95082a1301f6c9dc3ba1842033333)), closes [#6](https://github.com/HuLaSpark/HuLa-Nuxt/issues/6)
# [1.3.0](https://github.com/HuLaSpark/HuLa-Nuxt/compare/v1.2.1...v1.3.0) (2024-11-08)
### Features
* **build:** :sparkles: 新增semantic-release来进行自动化发布 ([530b6f5](https://github.com/HuLaSpark/HuLa-Nuxt/commit/530b6f5e43ec788a58227f4d9aacb809837f8653))
- **build:** :sparkles: 新增semantic-release来进行自动化发布 ([530b6f5](https://github.com/HuLaSpark/HuLa-Nuxt/commit/530b6f5e43ec788a58227f4d9aacb809837f8653))
## [1.2.1](https://gitee.com/HuLaSpark/HuLa-Nuxt/compare/v1.2.0...v1.2.1) (2024-10-24)
### 🐛 Bug Fixes | Bug 修复
* **config:** :bug: 修复commit配置文件错误 ([fd52595](https://gitee.com/HuLaSpark/HuLa-Nuxt/commit/fd52595dd6cbc9b9a9b4a50dcac84f7be45fe72e))
- **config:** :bug: 修复commit配置文件错误 ([fd52595](https://gitee.com/HuLaSpark/HuLa-Nuxt/commit/fd52595dd6cbc9b9a9b4a50dcac84f7be45fe72e))

View File

@@ -7,7 +7,9 @@ ENV HOST 0.0.0.0
# 容器内创建目录/nuxt3
RUN mkdir -p /nuxt3
# 复制当前的内容到容器内容部目录/nuxt3
COPY . /nuxt3/
COPY .output/public /nuxt3/public/
COPY .output/server /nuxt3/server/
COPY .output/nitro.json /nuxt3/nitro.json
# 切换工作目录到/nuxt3
WORKDIR /nuxt3
# 暴露端口3000默认端口

View File

@@ -10,46 +10,46 @@ const scopes = fs
module.exports = {
// 继承的规则
extends: ["@commitlint/config-conventional"],
extends: ['@commitlint/config-conventional'],
// 自定义规则
rules: {
// @see https://commitlint.js.org/#/reference-rules
// 提交类型枚举git提交type必须是以下类型
"type-enum": [
'type-enum': [
2,
"always",
'always',
[
"feat", // 新增功能
"fix", // 修复缺陷
"docs", // 文档变更
"style", // 代码格式(不影响功能,例如空格、分号等格式修正)
"refactor", // 代码重构(不包括 bug 修复、功能新增)
"perf", // 性能优化
"test", // 添加疏漏测试或已有测试改动
"build", // 构建流程、外部依赖变更(如升级 npm 包、修改 webpack 配置等)
"ci", // 修改 CI 配置、脚本
"revert", // 回滚 commit
"chore", // 对构建过程或辅助工具和库的更改(不影响源文件、测试用例)
],
'feat', // 新增功能
'fix', // 修复缺陷
'docs', // 文档变更
'style', // 代码格式(不影响功能,例如空格、分号等格式修正)
'refactor', // 代码重构(不包括 bug 修复、功能新增)
'perf', // 性能优化
'test', // 添加疏漏测试或已有测试改动
'build', // 构建流程、外部依赖变更(如升级 npm 包、修改 webpack 配置等)
'ci', // 修改 CI 配置、脚本
'revert', // 回滚 commit
'chore' // 对构建过程或辅助工具和库的更改(不影响源文件、测试用例)
]
],
"subject-case": [0], // subject大小写不做校验
'subject-case': [0] // subject大小写不做校验
},
prompt: {
messages: {
type: "选择你要提交的类型 :",
scope: "选择一个提交范围(可选):",
customScope: "请输入自定义的提交范围 :",
subject: "填写简短精炼的变更描述 :\n",
type: '选择你要提交的类型 :',
scope: '选择一个提交范围(可选):',
customScope: '请输入自定义的提交范围 :',
subject: '填写简短精炼的变更描述 :\n',
body: '填写更加详细的变更描述(可选)。使用 "|" 换行 :\n',
breaking: '列举非兼容性重大的变更(可选)。使用 "|" 换行 :\n',
footerPrefixesSelect: "选择关联issue前缀可选:",
customFooterPrefix: "输入自定义issue前缀 :",
footer: "列举关联issue (可选) 例如: #31, #I3244 :\n",
generatingByAI: "正在通过 AI 生成你的提交简短描述...",
generatedSelectByAI: "选择一个 AI 生成的简短描述:",
confirmCommit: "是否提交或修改commit ?",
footerPrefixesSelect: '选择关联issue前缀可选:',
customFooterPrefix: '输入自定义issue前缀 :',
footer: '列举关联issue (可选) 例如: #31, #I3244 :\n',
generatingByAI: '正在通过 AI 生成你的提交简短描述...',
generatedSelectByAI: '选择一个 AI 生成的简短描述:',
confirmCommit: '是否提交或修改commit ?'
},
// prettier-ignore
types: [
@@ -66,26 +66,24 @@ module.exports = {
{ value: "chore", name: "其他: 🛠️ 对构建过程或辅助工具和库的更改(不影响源文件、测试用例)", emoji: ":hammer:"},
],
useEmoji: true,
emojiAlign: "center",
emojiAlign: 'center',
useAI: false,
aiNumber: 1,
themeColorCode: "38;5;168",
themeColorCode: '38;5;168',
allowCustomScopes: true,
allowEmptyScopes: true,
customScopesAlign: 'bottom',
scopes: [...scopes],
upperCaseSubject: false,
markBreakingChangeMode: false,
allowBreakingChanges: ["feat", "fix"],
allowBreakingChanges: ['feat', 'fix'],
breaklineNumber: 100,
breaklineChar: "|",
breaklineChar: '|',
skipQuestions: [],
issuePrefixes: [
{ value: "closed", name: "closed: ISSUES has been processed" },
],
customIssuePrefixAlign: "top",
emptyIssuePrefixAlias: "skip",
customIssuePrefixAlias: "custom",
issuePrefixes: [{ value: 'closed', name: 'closed: ISSUES has been processed' }],
customIssuePrefixAlign: 'top',
emptyIssuePrefixAlias: 'skip',
customIssuePrefixAlias: 'custom',
allowCustomIssuePrefix: true,
allowEmptyIssuePrefix: true,
confirmColorize: true,
@@ -93,8 +91,8 @@ module.exports = {
maxSubjectLength: Infinity,
minSubjectLength: 0,
scopeOverrides: undefined,
defaultBody: "",
defaultIssues: "",
defaultSubject: "",
},
};
defaultBody: '',
defaultIssues: '',
defaultSubject: ''
}
}

View File

@@ -39,7 +39,7 @@
class="overflow-hidden focus:outline-none relative bg-white dark:bg-gray-900 ring-1 ring-gray-200 dark:ring-gray-800 rounded-md shadow-lg">
<div class="p-2 space-y-1">
<a
class="block px-2 py-1.5 rounded-md flex items-start gap-2 hover:bg-gray-100/50 dark:hover:bg-gray-950/50"
class="px-2 py-1.5 rounded-md flex items-start gap-2 hover:bg-gray-100/50 dark:hover:bg-gray-950/50"
href="/docs/getting-started/introduction">
<UIcon
name="solar:bolt-outline"

12
hula-web-deploy.sh Normal file
View File

@@ -0,0 +1,12 @@
echo -e "---------docker Login--------"
docker login --username=nongyehong registry.cn-hongkong.aliyuncs.com --password=k2439646234
echo -e "---------docker Stop--------"
docker stop hula-web
echo -e "---------docker Rm--------"
docker rm hula-web
docker rmi registry.cn-hongkong.aliyuncs.com/nongyehong/hula-web:latest
echo -e "---------docker Pull--------"
docker pull registry.cn-hongkong.aliyuncs.com/nongyehong/hula-web:latest
echo -e "---------docker Create and Start--------"
docker run --rm -d -p 13000:3000 --name hula-web registry.cn-hongkong.aliyuncs.com/nongyehong/hula-web:latest
echo -e "---------deploy Success--------"

View File

@@ -7,10 +7,6 @@
</div>
</template>
<script setup lang="ts">
<script setup lang="ts"></script>
</script>
<style scoped lang="scss">
</style>
<style scoped lang="scss"></style>

View File

@@ -8,8 +8,8 @@
"pnpm": ">=8.10.0"
},
"lint-staged": {
"*.{js,jsx,vue,ts,tsx}": [
"prettier --config .prettierrc --write",
"*.{js,jsx,vue,ts,tsx,json}": [
"prettier . --write",
"eslint ./"
]
},
@@ -50,7 +50,9 @@
"only-allow": "^1.2.1",
"prettier": "^3.3.3",
"sass": "^1.79.4",
"semantic-release": "^24.2.0"
"semantic-release": "^24.2.0",
"tailwindcss": "^3.4.14",
"typescript": "^5.6.3"
},
"config": {
"commitizen": {

View File

@@ -74,7 +74,7 @@
<UIcon
name="solar:alt-arrow-down-line-duotone"
:class="{ 'rotate-180': panelVisible }"
class="w-4 h-4 transform transition-transform duration-300 group-hover:text-teal-600 group-hover:rotate-180" />
class="w-4 h-4 group-hover:text-teal-600 group-hover:rotate-180" />
</div>
<template #panel>
@@ -149,21 +149,6 @@ watch(isCopy, (val) => {
}, 2000)
}
})
const handleCopy = () => {
const el = document.querySelector('input')
if (el) {
navigator.clipboard
.writeText(el.value)
.then(() => {
// 显示复制成功的提示
isCopy.value = true
})
.catch((err) => {
console.error('复制失败:', err)
})
}
}
</script>
<style scoped lang="scss"></style>

505
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +1,3 @@
:root {
--header-height: 4rem;
}
}

View File

@@ -12,4 +12,4 @@
::view-transition-new(root),
.dark::view-transition-old(root) {
z-index: 9999;
}
}

8
tailwind.config.cjs Normal file
View File

@@ -0,0 +1,8 @@
/** @type {import('tailwindcss').Config} */
module.exports = {
content: ['./index.html', './src/**/*.{vue,js,ts,js,jsx,tsx}'],
theme: {
extend: {}
},
plugins: []
}