Vue Academy · leksjon

Publisering og typing av Vue-plugins

Pakkestruktur, TypeScript-augmentering av ComponentCustomProperties og npm-distribusjon.

Leksjon 4 av 413 trinn

Publisering og typing av Vue-plugins er en gratis leksjon i Vue Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Vue Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Vue Academy inneholder totalt 4 leksjoner.

Pakking av en plugin for npm

For å dele en Vue-plugin publiserer De den som en npm-pakke. Pakken må deklarere de riktige avhengighetene, inneholde et korrekt bygg, inkludere TypeScript-typer og publiseres på riktig måte. Denne leksjonen dekker hvert trinn.

peerDependencies for Vue

Oppfør Vue som en peerDependency, ikke som en vanlig avhengighet. Da sørger De for at vertsappen leverer Vue, slik at to kopier av Vue unngås i samme bundle (noe som ødelegger reaktiviteten).

{
  "name": "vue-toast-kit",
  "peerDependencies": {
    "vue": "^3.4.0"
  },
  "devDependencies": {
    "vue": "^3.4.0"
  }
}

Vite library mode

Bygg pakken med Vites library mode. Konfigurer build.lib med entry point, navn og output-formater (ES + UMD), og eksternaliser Vue slik at den ikke blir inkludert i bundlen.

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

export default defineConfig({
  plugins: [vue()],
  build: {
    lib: {
      entry: 'src/index.ts',
      name: 'VueToastKit',
      fileName: 'index',
      formats: ['es', 'umd']
    }
  }
})

Eksternalisering av Vue i rollupOptions

Marker vue som ekstern og knytt den til en global variabel for UMD-bygget, slik at forbrukerens Vue brukes.

build: {
  lib: { /* ... */ },
  rollupOptions: {
    external: ['vue'],
    output: {
      globals: { vue: 'Vue' }
    }
  }
}

Generering av typedefinisjoner

Lever .d.ts-filer slik at brukerne får autoutfylling og typesjekking. Bruk vite-plugin-dts til å generere deklarasjoner under biblioteksbygget.

import dts from 'vite-plugin-dts'

export default defineConfig({
  plugins: [
    vue(),
    dts({ insertTypesEntry: true })
  ]
})

exports-feltet i package.json

Pek brukerne til de riktige filene med feltet exports, og eksponer ESM-bygget og typedefinisjonene. Angi type: module for pakker som prioriterer ESM.

{
  "type": "module",
  "main": "./dist/index.umd.cjs",
  "module": "./dist/index.js",
  "types": "./dist/index.d.ts",
  "exports": {
    ".": {
      "types": "./dist/index.d.ts",
      "import": "./dist/index.js",
      "require": "./dist/index.umd.cjs"
    }
  }
}

Publisering av typeaugmentering

Hvis pluginen Deres legger til globale egenskaper (som this.$toast), må De inkludere augmenteringen av ComponentCustomProperties i de publiserte typene, slik at brukernes redigeringsverktøy gjenkjenner den automatisk.

// src/types.d.ts (included in the build)
import type { ToastService } from './toast'

declare module 'vue' {
  interface ComponentCustomProperties {
    $toast: ToastService
  }
}

export {}

Det offentlige inngangspunktet

Inngangspunktet src/index.ts bør eksportere pluginen som default, i tillegg til eventuelle composables, nøkler og typer brukerne trenger.

import ToastPlugin from './plugin'
export default ToastPlugin

export { useToast } from './composable'
export { toastKey } from './toast'
export type { ToastService, Toast } from './toast'

files-feltet

Bruk feltet files til å publisere bare byggresultatet, slik at pakken holdes liten og kildekode og konfigurasjon utelates.

{
  "files": ["dist"],
  "sideEffects": false
}

Publisering med provenance

Publiser til npm med provenance, som kobler pakken kryptografisk til CI-bygget og kildekodecommit-en. Kjør publiseringen fra en klarert CI (GitHub Actions) med riktige tillatelser.

# in CI (GitHub Actions)
npm publish --provenance --access public

# package.json can also set:
# "publishConfig": { "provenance": true }

Sjekkliste før publisering

Før publisering må De kontrollere at Vue er en peer-avhengighet, at dist inneholder ESM og typer, at exports løses riktig, at versjonen er oppdatert, og at en dry run ser riktig ut.

# inspect what will be published
npm publish --dry-run

# verify the tarball contents
npm pack

Hurtigsjekk

Test forståelsen Deres av publisering av Vue-plugins.

Oppsummering

De lærte om publisering og typing av plugins:

  • Oppfør Vue som en peerDependency for å unngå dupliserte Vue-kopier
  • Bygg med Vite library mode, og eksternaliser Vue
  • Generer .d.ts (vite-plugin-dts) og lever typeaugmentering
  • Konfigurer exports, files og type: module
  • Publiser med --provenance fra en klarert CI
Gratis å komme i gang

Lær deg HTML med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
42
Leksjoner
156

Ofte stilte spørsmål

Er leksjonen «Publisering og typing av Vue-plugins» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Vue Academy, inkludert «Publisering og typing av Vue-plugins», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Vue Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Publisering og typing av Vue-plugins»?

Pakkestruktur, TypeScript-augmentering av ComponentCustomProperties og npm-distribusjon. Du øver på Vue Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Vue Academy?

Ingen tidligere erfaring er nødvendig. Vue Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Publisering og typing av Vue-plugins»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Vue Academy-leksjonen?

Ja. Alle Vue Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Plugin-arkitektur og app.use()
  2. Globale egenskaper og provide/inject i plugins
  3. Eksempel på notification- og toast-plugin
  4. Publisering og typing av Vue-plugins
← Tilbake til Vue Academy