溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Vue3組件庫(kù)的環(huán)境如何配置

發(fā)布時(shí)間:2023-05-17 15:42:26 來(lái)源:億速云 閱讀:113 作者:zzz 欄目:編程語(yǔ)言

這篇文章主要講解了“Vue3組件庫(kù)的環(huán)境如何配置”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Vue3組件庫(kù)的環(huán)境如何配置”吧!

因?yàn)槲覀兪鞘褂?Vite+Ts 開(kāi)發(fā)的是 Vue3 組件庫(kù),所以我們需要安裝 typescript、vue3,同時(shí)項(xiàng)目將采用 Less 進(jìn)行組件庫(kù)樣式的管理

pnpm add vue@next typescript less -D -w

使用pnpm如果要安裝在項(xiàng)目根目錄下,則需要加-w

初始化 ts

在根目錄執(zhí)行npx tsc --init,然后就會(huì)自動(dòng)生成 ts 的配置文件tsconfig.json,然后我們對(duì)其做一個(gè)更換

{
  "compilerOptions": {
    "baseUrl": ".",
    "jsx": "preserve",
    "strict": true,
    "target": "ES2015",
    "module": "ESNext",
    "skipLibCheck": true,
    "esModuleInterop": true,
    "moduleResolution": "Node",
    "lib": ["esnext", "dom"]
  }
}

tsconfig.json暫時(shí)先做這樣一個(gè)配置,后續(xù)可能會(huì)有一定的調(diào)整

搭建一個(gè)基于 vite 的 vue3 項(xiàng)目

因?yàn)槲覀円_(kāi)發(fā)的是一個(gè) Vue3 組件庫(kù),肯定需要一個(gè) Vue3 項(xiàng)目來(lái)測(cè)試我們的組件庫(kù),所以這里將自己搭建一個(gè)基于 Vite 的 Vue3 項(xiàng)目來(lái)對(duì)組件進(jìn)行調(diào)試。因此我們?cè)诟夸浶陆ㄒ粋€(gè)叫 play 的文件夾然后初始化pnpm init,后續(xù)的組件調(diào)試就在這個(gè)項(xiàng)目下進(jìn)行。接下來(lái)我們就開(kāi)始搭建一個(gè) Vue3+Vite 的項(xiàng)目

安裝插件

我們需要安裝vitevitejs/plugin-vue插件,@vitejs/plugin-vue插件是為了解析后綴為.vue文件的。在 play 目錄下執(zhí)行

pnpm add vite @vitejs/plugin-vue -D
配置 vite.config.ts

新建vite.config.ts配置文件

import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";

export default defineConfig({
  plugins: [vue()],
});
新建入口 html 文件

@vitejs/plugin-vue會(huì)默認(rèn)加載 play 下的 index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>play</title>
  </head>
  <body>
    <div id="app"></div>
    <script src="main.ts" type="module"></script>
  </body>
</html>

因?yàn)?vite 是基于 esmodule 的,所以script標(biāo)簽中需要添加type="module"

app.vue

新建app.vue文件

<template>
  <div>啟動(dòng)測(cè)試</div>
</template>
入口 main.ts

新建main.ts

import { createApp } from "vue";
import App from "./app.vue";

const app = createApp(App);

app.mount("#app");
配置腳本啟動(dòng)項(xiàng)目

package.json配置scripts腳本

{
  "name": "play",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "dev": "vite"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@vitejs/plugin-vue": "^4.0.0",
    "vite": "^4.1.1"
  }
}

因?yàn)?play 項(xiàng)目需要測(cè)試本地的組件庫(kù),所以也需要將 play 和我們的組件庫(kù)關(guān)聯(lián)在一起。修改一下pnpm-workspace.yaml文件

packages:
  - "packages/**"
  - "play"

此時(shí) play 項(xiàng)目便可以安裝本地 packages 下的包了

最后執(zhí)行pnpm run dev,便可啟動(dòng)我們的 play 項(xiàng)目

Vue3組件庫(kù)的環(huán)境如何配置

但是有一個(gè)問(wèn)題就是 ts 無(wú)法識(shí)別*.vue文件,所以編譯器會(huì)報(bào)紅

Vue3組件庫(kù)的環(huán)境如何配置

此時(shí)我們需要新建一個(gè)聲明文件vue-shim.d.ts,讓 ts 認(rèn)識(shí)*.vue的文件

declare module '*.vue' {
    import type { DefineComponent } from "vue";
    const component: DefineComponent<{}, {}, any>
}

此時(shí)報(bào)錯(cuò)便消失了。

感謝各位的閱讀,以上就是“Vue3組件庫(kù)的環(huán)境如何配置”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Vue3組件庫(kù)的環(huán)境如何配置這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI