Sivo 悉见

vue3+ts+vite 搭建uniapp项目(微信小程序

匿名 · 更新于 2022/5/26

  1. 模板下载:
    1. uniapp 官网通过vue-cli 命令行创建uniapp,参考uni-app官网,使用  npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project下载模板;
  2. 安装css预处理 sass:
    1. 项目终端输入:yarn add node-sass@^4.0.0 sass-loader@^10.0.1 sass(模板没有默认安装sass, 如果不安装直接使用会报错)
  3.  安装uni-ui组件库,配置easycom模式无引入使用
    1. 项目终端输入:yarn add @dcloudio/uni-ui
    2. src/package.json 文件配置easycom模式(组件无需import | require直接使用)
      "easycom": {
          "autoscan": true,
          "custom": {
            "^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue"
          }
        }
      	<pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; overflow-x: auto; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 14px; line-height: 22px; color: rgb(0, 0, 0);">
      

       

  4.  配置使用微信小程序API
    1. 由于安装的uniapp-ts项目只会包含uni-app本身的@types声明,如果想直接使用wx或小程序的api的话就需要自行添加,以微信小程序为例:项目终端输入:yarn add @types/weixin-app

    2. 打开tsconfig.json文件,在types选项中添加weixin使用的声明

      	<div style="clear:both;margin-bottom:20px" title="双击代码块即可选中代码块,按下Ctrl+C复制代码">
      	<pre class="brush:js;toolbar:false; " title="js代码">
      

      "types": [         "@dcloudio/types",      //这一项是原本包含的           "weixin-app",           //wx-app的TypeScript定义  新添加    /以下包需要先安装*********/                  "miniprogram-api-typings",//微信小程序api的typescript类型定义文件,和weixin-app同;可选         "mini-types",             //支付宝小程序的typescript类型定义文件     ],

      	<pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; overflow-x: auto; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 14px; line-height: 22px; color: rgb(0, 0, 0);">
      

       

  5.  配置文件路径别名 | 可选
    1. 打开vite.config.ts文件,使用resolve选项配置:
       

      	<div style="clear:both;margin-bottom:20px" title="双击代码块即可选中代码块,按下Ctrl+C复制代码">
      	<pre class="brush:js;toolbar:false; " title="js代码">
      

      import { defineConfig } from 'vite' import uni from '@dcloudio/vite-plugin-uni'

      const path = require('path')

      // https://vitejs.dev/config/ export default defineConfig({ plugins: [uni()], resolve: { alias: { '@': path.resolve(__dirname, 'src'), }, }, })

      	<pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; overflow-x: auto; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 14px; line-height: 22px; color: rgb(0, 0, 0);">
      

       

    2. tsconfig.json中配置

      	<pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; overflow-x: auto; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 14px; line-height: 22px; color: rgb(0, 0, 0);">
      

       

      	<div style="clear:both;margin-bottom:20px" title="双击代码块即可选中代码块,按下Ctrl+C复制代码">
      	<pre class="brush:js;toolbar:false; " title="js代码">
      

      //compilerOptions中配置

      "baseUrl": ".", "paths": { "@/": [ "src/" ] },

      	<pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; overflow-x: auto; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 14px; line-height: 22px; color: rgb(0, 0, 0);">
      

       

    3.  

      	<p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-size: 18px; color: rgb(77, 77, 77); overflow: auto hidden; overflow-wrap: break-word; line-height: 26px !important;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word; background-color: rgb(254, 252, 216);">发现在vite.config.ts中无法使用关键字 require;</span><span style="box-sizing: border-box; outline: 0px; font-weight: 700; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word; background-color: rgb(254, 252, 216);">要重启编辑器</span></span><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word; background-color: rgb(254, 252, 216);">)</span></p>
      
      	<ol style="box-sizing: border-box; outline: 0px; margin: 0px 0px 24px; padding-right: 0px; padding-left: 0px; list-style: none; overflow-wrap: break-word;">
      		<li style="box-sizing: border-box; outline: 0px; margin: 8px 0px 0px 40px; padding: 0px; list-style: decimal; overflow-wrap: break-word;">
      		<p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-size: 18px; color: rgb(77, 77, 77); overflow: auto hidden; overflow-wrap: break-word; line-height: 26px !important;">安装依赖包:<span style="box-sizing: border-box; outline: 0px; font-weight: 700; overflow-wrap: break-word;">yarn add @types/node -D</span></p>
      		</li>
      		<li style="box-sizing: border-box; outline: 0px; margin: 8px 0px 0px 40px; padding: 0px; list-style: decimal; overflow-wrap: break-word;">
      		<p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-size: 18px; color: rgb(77, 77, 77); overflow: auto hidden; overflow-wrap: break-word; line-height: 26px !important;">tsconfig.json中配置 | 可选:<img alt="" height="501" src="https://image.edbiji.com/doccon/20220526/20220526215407_465466_92693.png" style="box-sizing: border-box; outline: none; border: 0px; max-width: 100%; height: auto; overflow-wrap: break-word; cursor: zoom-in;" width="765" /></p>
      
      		<div style="clear:both;margin-bottom:20px" title="双击代码块即可选中代码块,按下Ctrl+C复制代码">
      		<pre class="brush:js;toolbar:false; " title="js代码">
      

      //compilerOptions中配置

      "types": [ "@dcloudio/types", "weixin-app", "miniprogram-api-typings", "mini-types", "node" //可选 ],

      		<pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; overflow-x: auto; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 14px; line-height: 22px; color: rgb(0, 0, 0);">
      

        

      		<p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-size: 18px; color: rgb(77, 77, 77); overflow: auto hidden; overflow-wrap: break-word; line-height: 26px !important;">重启编辑器</p>
      		</li>
      		<li style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; list-style: none; overflow-wrap: break-word; height: 22px;">&nbsp;</li>
      	</ol>
      	</li>
      </ol>
      </li>
      <li style="box-sizing: border-box; outline: 0px; margin: 8px 0px 0px 40px; padding: 0px; list-style: decimal; overflow-wrap: break-word;">运行项目: 使用y<span style="box-sizing: border-box; outline: 0px; font-weight: 700; overflow-wrap: break-word;">arn run dev:mp-weixin运行</span>;微信开发者工具打开<span style="box-sizing: border-box; outline: 0px; font-weight: 700; overflow-wrap: break-word;">dist/mp-weixin</span>文件夹</li>