Vite(Vue.js) + VitePress의 Package 관리
개시하다
이번에저번 제작된 ToDo 애플리케이션의 내비게이션 막대 패키지화를 VistePress로 문서화, 패키지 배부, 사용 등을 소개한다.
페이지 만들기
이상의 글을 바탕으로traning-parts라는 프로젝트를 새로 만들어 환경 설정, SB Admin,Font Awesome의 설치를 진행하십시오.그리고 기존 vue 파일이나public 파일을 삭제하고 다음 파일을 만드십시오.
→
index.ts
import { createApp } from "vue";
import { library } from "@fortawesome/fontawesome-svg-core";
import { fas } from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
import { dom } from "@fortawesome/fontawesome-svg-core";
import "startbootstrap-sb-admin/src/scss/styles.scss";
library.add(fas);
dom.watch();
// App.vueは不要
createApp({}).component("font-awesome-icon", FontAwesomeIcon);
// パッケージ化するコンポーネントを取り込む
export { default as NaviBar } from "./components/NaviBar.vue";
export { default as NotFound } from "./components/NotFound.vue";
Typescript에서 제작된 패키지를 사용할 수 있도록 types 출력으로 수정되었습니다.tsconfig.json
...
"declaration": true,
"emitDeclarationOnly": true,
"declarationDir": "./types",
}
패키지에는 CommonJS, ES Module, UMD가 담겨 있는데 이번에는 Vue다.js에서 가져오는 모듈이기 때문에 ES Module만 만듭니다.또한 구성 요소의 동작 확인은vitepress에서 진행하십시오.package.json
{
"name": "traning-parts",
"version": "0.0.0",
"files": [
"dist",
"types"
],
"types": "./types/index.d.ts",
"module": "./dist/traning-parts.es.js",
"exports": {
".": {
"import": "./dist/traning-parts.es.js"
}
},
"scripts": {
"dev": "vitepress dev docs",
"build": "vitepress build docs",
"serve": "vitepress serve docs",
"build:library": "vue-tsc && vite build"
},
...
마지막으로dist 폴더에es파일이 있는지 확인하려면 아래 명령을 실행하십시오.> npm run build:library
VitePress
패키지된 어셈블리의 동작을 확인하기 위해 VitePress에서 샘플 디스플레이와 어셈블리 설명을 작성합니다.
> npm i -D vitepress
제작자는 일반적으로 docs 폴더 아래에서Markdown 파일을 제작한다.docs/index.md
---
title: Introduction
---
# Traning Parts
## 使い方
...
원본 코드는 문장 관계에서 코드 블록 기호로 대체됩니다.md로 표를 만들 때Excel to Markdown table를 사용하면 Excel로 표를 복사하고 Shift-Art-V로 붙이면 줄을 바꾸어 Mardown 형식으로 변환할 수 있습니다.
docs/guide/navibar.md
# NaviBar
[[toc]]
## Usage
'''vue
<script setup>
const menuItems: MenuItem[] = [
{
type: "heading",
title: "Heading",
},
{
type: "menu",
title: "Main",
icon: "fa-list",
url: "/",
},
];
</script>
<NaviBar title="Title" :menu-items="menuItems">
<router-view />
</NaviBar>
'''
## Sample
<a href="navibarSample" target="_blank">Sample</a>
## Props
| Name | Type | Required | Description |
| -------- | ---------- | -------- | ---------------------- |
| title | string | true | タイトルを表示します。 |
| menuItem | MenuItem[] | true | メニューを設定します。 |
## Type
### MenuItem
| Name | Type | Required | Description |
| ----- | ----------------- | -------- | ------------------------------------------------------- |
| type | "heading" ,"menu" | true | メニュータイプ<br/>heading の場合は、icon, url 指定不可 |
| title | string | true | メニュータイトル |
| icon | string | false | アイコン |
| url | string | false | URL |
내비게이션 표시줄의 견본은 전체 화면에 표시되기 때문에 다른 창에 표시되는 것과 마찬가지로md 파일은 분리되어 있지만, 보통 한 파일은 문제가 없습니다.lang="ts"를 사용할 수 없는 것 같습니다.docs/guide/navibarSample.md
<script setup>
import { NaviBar } from "../../src/index";
const menuItems = [
{
type: "heading",
title: "Heading",
},
{
type: "menu",
title: "Menu",
icon: "fa-list",
url: "/",
},
]
</script>
<NaviBar title="Title" :menu-items="menuItems">
<h1 class="mt-4">Main Page</h1>
</NaviBar>
VitePress의 router 설정을 수행합니다.vite 옵션은build에서 다음 오류가 발생하기 때문에 추가됩니다.import { defineConfig } from "vitepress";
export default defineConfig({
lang: "ja-JP",
title: "Traning Parts",
description: "Traning Parts Vue 3 component library",
themeConfig: {
docsDir: "docs",
sidebar: [
{
text: "Introduction",
link: "/",
},
{
text: "Components",
children: [{ text: "NaviBar", link: "/guide/navibar" }],
},
],
},
vite: {
build: {
chunkSizeWarningLimit: 1500,
},
css: {
preprocessorOptions: {
scss: {
charset: false,
},
},
},
},
});
다음 명령을 통해 동작 확인을 확인할 수 있습니다.> npm run dev
→ プレビュー
> npm run build
→ html作成
Package 공개
Package에는 다음과 같은 서비스가 공개돼 있는데, 이번에는 프로그램이 간단한 Azure Artifact를 사용했다.사용 습관의 절차에 따라 실시하세요.
GitLab Package Registry ... 로컬에서 작성할 수 있습니다.
Verdaccio ... 로컬에서 작성할 수 있습니다.
GitHub Packages ... 무제한 Public, Private ~ 500MB 무료
Azure Artifact ... 2GB까지 무료.
・Name...traning-parts
registry=https://pkgs.dev.azure.com/....
always-auth=true
> vsts-npm-auth -config .npmrc
→ Azure Artifactsのアクセストークン作成
> npm publish
→ パッケージ公開
이용 방법
이번에 제작된 패키지를 활용해 내비게이션 막대를 실제로 보여준다.
우선 새로운 프로젝트를 만들고 제작된 패키지를 설치한다.그때는 Package가 공개적으로 제작했습니다.npmrc 복사.
> npm i traning-parts
→ 必要なパッケージがすべてインストールされる。
> npm i -D sass
→ scssをimportする際に必要。
다음에 제작된 소프트웨어 패키지를 사용하여 내비게이션 표시줄을 표시합니다.필요하지 않은 vue 파일을 삭제하십시오.views/Main.vue
<template>
<h1 class="mt-4">Main Page</h1>
</template>
views/Sub.vue<template>
<h1 class="mt-4">Sub Page</h1>
</template>
App.vue<script setup lang="ts">
import { NaviBar, MenuItem } from 'traning-parts'
const menuItems : MenuItem[] = [
{
type: "heading",
title: "Heading",
},
{
type: "menu",
title: "Main",
icon: "fa-list",
url: "/",
},
{
type: "menu",
title: "Sub",
icon: "fa-list-alt",
url: "/sub",
},
]
</script>
<template>
<NaviBar title="test" :menu-items="menuItems">
<router-view />
</NaviBar>
</template>
router/index.tsimport { createRouter, createWebHistory, RouteRecordRaw } from "vue-router";
import { NotFound } from 'traning-parts'
import Main from "../views/Main.vue";
import Sub from "../views/Sub.vue";
const routers: Array<RouteRecordRaw> = [
{
path: "/",
component: Main,
},
{
path: "/sub",
component: Sub,
},
{
path: "/:pathMatch(.*)*",
component: NotFound,
},
];
const router = createRouter({
history: createWebHistory(),
routes: routers,
});
export default router;
main.tsimport { createApp } from 'vue'
import App from './App.vue'
import router from "./router";
import "startbootstrap-sb-admin/src/scss/styles.scss";
createApp(App).use(router).mount('#app')
이것만 이루어지면 끝이야.동작 확인으로 탐색 모음이 제대로 작동하는지 확인합니다.Package가 업데이트된 경우 package.json의version을 변경하여npm 업데이트를 진행하십시오.> npm update traning-parts
끝맺다
bootstrap+vitePress를 이용할 때 scss를 이용하지 않으면 Warning: "@charset"must be the first rule in the file이 나와 눈치채기까지 힘들었습니다.
앞으로 바이트 패키지 개발 프로젝트도 늘어날 것 같아서 이 기사를 활용했으면 좋겠어요.
Reference
이 문제에 관하여(Vite(Vue.js) + VitePress의 Package 관리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/atoz/articles/58ccd12fd14d57텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)