月空人的代码片段

这些是我在日常开发中使用的代码片段,你可以直接复制过去用!

该项目部署使用的 GitHub Actions

这里的 secrets 是在 GitHub 仓库的设置中配置的环境变量,确保你已经在仓库的 Secrets 中添加了 WXW_HOST, WXW_USERNAME, WXW_PASSWORD, 和 WXW_TARGET。 这样配置后,每次你向 main 分支推送代码时,GitHub Actions 会自动触发部署流程,构建你的 Nuxt 应用并将其部署到指定的服务器上。 你可以根据自己的需求调整 node-version 和其他配置项。

pnpm 工作区配置

pnpm-workspace.yamlyml
packages:
  - 'packages/*'
  - 'apps/*'
  - '!**/test/**'

pinia 常用

仓库配置

app.store.tsts
import { defineStore } from 'pinia'
import { ref } from 'vue'

export const useAppStore = defineStore('appStore', () => {
    const user = ref(null)

    return {
        user,
    }
})

使用

app.vuevue
<script setup lang="ts">
import { storeToRefs } from 'pinia'

import { useAppStore } from '@/store/app.store'

const appStore = useAppStore()
const { user } = storeToRefs(appStore)
</script>

Nestjs 全局响应拦截器

添加这个可以让所有接口返回值都符合统一的格式

types/response.type.tsts
export interface IResponse<T> {
    data: T
    status: number
    extra: Record<string, any>
    message: string
    success: boolean
}

export interface IResponseWithExtra<T, R = Record<string, any>> {
    data?: T
    extra?: R
}

interface IPaginationExtra {
    total: number
    page: number
    pageSize: number
    [key: string]: any // 其他字段
}

export interface IResponseWithPagination<T, R = IPaginationExtra> {
    data?: T[]
    extra?: R
}

VSCode 代码片段

一些我用的 VSCode 代码片段

json
{
  "vue3 setup base": {
    "prefix": "v3",
    "body": [
      "<script lang='ts' setup>",
      "",
      "</script>",
      "",
      "<template>",
      "$1",
      "</template>",
      "",
    ],
    "description": "vue3 setup base",
  },
  "pinia base": {
    "prefix": "v3-store",
    "body": [
      "import { defineStore } from 'pinia'",
      "",
      "export const use${TM_FILENAME_BASE/^(.)|-(.)/${1:/capitalize}${2:/capitalize}/g} = defineStore('$TM_FILENAME_BASE', () => {",
      "    ",
      "",
      "    return {",
      "        ",
      "    }",
      "})",
    ],
    "description": "pinia base",
  },
}