当前位置:   article > 正文

vite搭建vue3、typeScript项目_vue 3 + typescript + vite

vue 3 + typescript + vite

使用vite搭建vue3、typeScript项目的具体步骤:

一、创建项目vite

1.逐步操作:

① 使用npmnpm create vite@latest
② 使用yarn:yarn create vite
③ 使用pnpm:pnpm create vite

2.直接创建middleground-login为项目名称

1.运行:npm create vite@latest middleground-login -- --template vue其中
2.选择vue —— vue-ts
3.按照提示进行操作:
cd 项目名
npm install
npm run dev

在这里插入图片描述

3.安装指定vite版本

npm init vite@2.9.5 middleground-login
在这里插入图片描述

4.完成项目创建,运行效果:

在这里插入图片描述

二、细节配置

1.①配置tsconfig.json

添加配置@,通过@代表src

"paths": {
      "@/*": [
        "./src/*"
      ]
    },
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述
②同时在vite.config.ts文件中配置@:
在这里插入图片描述

import { defineConfig, ConfigEnv, UserConfigExport, loadEnv } from 'vite'

import vue from '@vitejs/plugin-vue'

// https://vitejs.dev/config/
export default (({ command, mode }: ConfigEnv): UserConfigExport => {
  // 环境变量
  let env = loadEnv(mode, process.cwd())

  // 是否为生产环境
  let isProduction = mode === 'production'

  return defineConfig({
    base: env.VITE_BASE,

    plugins: [
      vue(),
    ],
    css: {},
    resolve: {

      alias: {

        '@': '/src'
      }
    },
    server: {

      // host设置为true才可以使用network的形式,以ip访问项目
      host: true,

      // 端口号
      port: 8080,

      // 自动打开浏览器
      open: false,

      // 跨域设置允许
      cors: true,

      // 如果端口已占用直接退出
      strictPort: true,

      // 接口代理
      proxy: {
        '/workwxht': {
          target: 'http://192.168.1.101:9001',

          // 允许跨域
          changeOrigin: true,

          // 重写地址
          rewrite: (path) => path.replace('/workwxht/', '/')
        }
      }

    },
    build: {
      brotliSize: false,

      // 消除打包大小超过500kb警告
      chunkSizeWarningLimit: 500,

      // 在生产环境移除console.log
      terserOptions: {

        compress: {

          drop_console: true,

          drop_debugger: true

        },

      },

      assetsDir: 'static/assets',

      // 静态资源打包到dist下的不同目录
      rollupOptions: {

        output: {

          chunkFileNames: 'static/js/[name]-[hash].js',

          entryFileNames: 'static/js/[name]-[hash].js',

          assetFileNames: 'static/[ext]/[name]-[hash].[ext]',

          // 静态资源分拆打包
          manualChunks(id: any) {

            if (id.includes('node_modules')) {

              return id.toString().split('node_modules/')[1].split('/')[0].toString();

            }

          }

        },

      },
    },
    define: {
      'process.env': { ...env, isProduction }
    }
  })
})

// export default defineConfig({
//   plugins: [vue()]
// })
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113

2.安装vue-router配置路由:

npm i vue-router -S
1.配置路由:
createWebHistory 可以理解为history模式,路径不带#
createWebHashHistory可以理解为hash模式,路径带#

import {
  createRouter, createWebHistory
} from 'vue-router'

const router = createRouter({
  history: createWebHistory(),
  routes: [
    {
      name: 'ceshi',
      path: '/ceshi',
      component: () => import("@/views/ceshi/index.vue"),
      meta: {
        title: '测试'
      }
    }
  ]
})
export default router;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

2.修改App.vue,编辑路由出口

<template>
  <!-- 测试 -->
  <router-view v-slot="{ Component }">
    <component :is="Component" />
  </router-view>
</template>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3.在main.ts中配置路由

import { createApp } from 'vue'

import App from './App.vue'

// 路由
import $router from './router'

// createApp(App).mount('#app')
const app = createApp(App)

app.use($router)

app.mount('#app')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

此时,通过对应的路由即可访问页面。

三、配置UI库

1.引入

element-plus:npm install element-plus --save

设置成官方推荐的自动引入方式:
安装unplugin-vue-componentsunplugin-auto-import这两款插件

npm install -D unplugin-vue-components unplugin-auto-import
  • 1

2.在vite.config.ts中配置自动导入:

// 自动导入引用
import AutoImport from "unplugin-auto-import/vite"

// 自动导入组件
import Components from 'unplugin-vue-components/vite'

// element plus 
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'


plugins: [
      vue(),
      AutoImport({

        dts: './src/auto-imports.d.ts',

        imports: ['vue', 'pinia', 'vue-router', '@vueuse/core'],

        // Generate corresponding .eslintrc-auto-import.json file.
        // eslint globals Docs - https://eslint.org/docs/user-guide/configuring/language-options#specifying-globals
        eslintrc: {

          // Default `false`
          enabled: true,

          // Default `./.eslintrc-auto-import.json`
          filepath: './.eslintrc-auto-import.json',

          // Default `true`, (true | false | 'readonly' | 'readable' | 'writable' | 'writeable')
          globalsPropValue: true,

        },

        resolvers: [ElementPlusResolver()],

      }),
      Components({

        dts: './src/components.d.ts',

        // imports 指定组件所在位置,默认为 src/components
        dirs: ['src/components/'],

        resolvers: [ElementPlusResolver()],

      }),
    ],
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47

配置完成之后,可以直接在页面使用:

<template>
  <el-button>Default</el-button>
</template>
  • 1
  • 2
  • 3

在这里插入图片描述

四、其他配置安装信息

1.安装axios:

npm i axios -S 或 yarn add axios -S

2.安装sass:

npm i sass -S 或 yarn add sass -S

3.安装pinia:

npm i pinia-S 或 yarn add pinia -S

4.安装Autoprefixer

自动添加前缀
yarn add autoprefixer -D
yarn add postcss-flexbugs-fixes -D

如果显示网络连接有问题:
info There appears to be trouble with your network connection. Retrying...
error An unexpected error occurred: "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz: connect ETIMEDOUT 104.16.24.34:443".
见:五、遇到的问题

在vite.config.ts文件中添加配置:

 import Autoprefixer from 'autoprefixer'

import PostcssFlexbugsFixes from 'postcss-flexbugs-fixes'

export default defineConfig({
 ...
 ...
css: {

    postcss: {

      plugins: [

        Autoprefixer({
          overrideBrowserslist: [
            'Android 4.1',
            'iOS 7.1',
            'Chrome > 31',
            'ff > 31',
            'ie >= 8',
            '> 1%'
          ],
          grid: true
        }),

        PostcssFlexbugsFixes()

      ],

    }

  },
  ...
  ...
 })

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

5.安装vconsole便于移动端调试:

npm i vconsole -S 或 yarn add vconsole -S
在main.ts文件中加上如下配置:

// 调试
import VConsole from 'vconsole'

let vConsole = new VConsole();

export default vConsole;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

效果:
在这里插入图片描述

五、遇到的问题:

1.打包不成功:

提示 Property 'code' does not exist on type '{}'
解决办法:打开package.json文件,将"build": "vue-tsc --noEmit && vite build"改为:build": "vite build"即可。

2.打包报错:

terser not found. Since Vite v3, terser has become an optional dependency. You need to install it.
在这里插入图片描述

解决办法:安装terser
npm i terser --legacy-peer-deps 或 yarn add terser --legacy-peer-deps

3.安装autoprefixer报错

在这里插入图片描述
解决办法
1、先查看是否切换淘宝镜像:
①设置为淘宝镜像
npm config set registry https://registry.npm.taobao.org/
yarn config set registry https://registry.npm.taobao.org/
②查看当前镜像
npm get registry
yarn config get registry
在这里插入图片描述
2、淘宝镜像下还是不行的话,执行以下方法:
①删除项目下yarn.lock文件:
在这里插入图片描述
②重新安装依赖:
npm install
yarn install
③再次安装,就成功了
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/505623
推荐阅读
相关标签
  

闽ICP备14008679号