Kliping
KlipingBerandaDokumentasiKomponenBlocksVariasiTemplateDice UIHooks
Bagian
  • Pengenalan
  • Komponen
  • Instalasi
  • Tema & Kustomisasi
  • Mode Gelap
  • CLI
  • RTL
  • Skills
  • Server MCP
  • Form
  • Catatan Perubahan
Instalasi
  • Vite
  • Nuxt
  • Astro
  • Laravel
  • Manual
Mode Gelap
  • Vite
  • Nuxt
  • Vitepress
  • Astro
Form
  • VeeValidate
  • TanStack Form
  • Formisch
Registry
  • Ikhtisar
  • Memulai
  • Contoh
  • registry.json
  • registry-item.json
  • Tanya Jawab
Utilitas
  • scroll-fade
  • shimmer
Lainnya
  • components.json
  • JavaScript
  • Figma
  • Direktori Registry
  • Warna
  • Typeset
  • Dokumentasi Lama
  • Tentang
  • Kredit
  • Kontribusi
Komponen
  • Accordion
  • Alert
  • Alert Dialog
  • Aspect Ratio
  • Attachment
  • Avatar
  • Badge
  • Breadcrumb
  • Bubble
  • Button
  • Button Group
  • Calendar
  • Card
  • Carousel
  • Chart
  • Checkbox
  • Collapsible
  • Combobox
  • Command
  • Context Menu
  • Data Table
  • Date Picker
  • Dialog
  • Drawer
  • Dropdown Menu
  • Empty
  • Field
  • Form
  • Hover Card
  • Input
  • Input Group
  • Input OTP
  • Item
  • Kbd
  • Label
  • Marker
  • Menubar
  • Message
  • Message Scroller
  • Native Select
  • Navigation Menu
  • Number Field
  • Pagination
  • Pin Input
  • Popover
  • Progress
  • Questionnaire
  • Radio Group
  • Range Calendar
  • Resizable
  • Scroll Area
  • Select
  • Separator
  • Sheet
  • Sidebar
  • Skeleton
  • Slider
  • Sonner
  • Spinner
  • Stepper
  • Switch
  • Table
  • Tabs
  • Tags Input
  • Textarea
  • Toast
  • Toggle
  • Toggle Group
  • Tooltip
  • Typography

Nuxt

SebelumnyaBerikutnya

Memasang dan mengonfigurasi Kliping di project Nuxt.

Buat project ​

Mulai dengan membuat project Nuxt baru:

bash
npm create nuxt@latest

Kalau Anda menemui error ERROR: Cannot read properties of undefined (reading 'sys') (x4), pasang TypeScript sebagai dependency seperti disarankan pada issue ini.

bash
npm install -D typescript

Pasang Tailwind CSS ​

Ada dua cara memasang Tailwind CSS di Nuxt. Pilih salah satu.

bash
npm install tailwindcss @tailwindcss/vite -D

Ganti seluruh isi app/assets/css/tailwind.css dengan baris berikut:

css
@import "tailwindcss";

Perbarui nuxt.config.ts seperti ini:

ts
import tailwindcss from '@tailwindcss/vite'

export default defineNuxtConfig({
  // ...
  css: ['~/assets/css/tailwind.css'],
  vite: {
    plugins: [
      tailwindcss(),
    ],
  },
})
bash
npm install tailwindcss @nuxtjs/tailwindcss@7.0.0-beta.1 -D

Ganti seluruh isi app/assets/css/tailwind.css dengan baris berikut:

css
@import "tailwindcss";
ts
export default defineNuxtConfig({
  // ...
  modules: ['@nuxtjs/tailwindcss'],
})

Pasang module Nuxt ​

Kalau langkah ini dilewati, console Anda akan dipenuhi peringatan akibat fitur auto-import milik Nuxt.

Pasang paket berikut.

bash
npx nuxi@latest module add shadcn-nuxt

Pasang @types/node terlebih dahulu.

bash
npm install -D @types/node

Lalu tambahkan kode berikut ke modules/shadcn.ts.

ts
import { readdirSync } from 'node:fs'
import { join } from 'node:path'
import {
  addComponentExports,
  addComponentsDir,
  createResolver,
  defineNuxtModule,
} from 'nuxt/kit'

export interface ShadcnVueOptions {
  /**
   * Prefix for all the imported component
   * @default "Ui"
   */
  prefix: string

  /**
   * Directory that the component lives in.
   * @default "@/components/ui"
   */
  componentDir: string
}

export default defineNuxtModule<ShadcnVueOptions>({
  defaults: {
    prefix: 'Ui',
    componentDir: '@/components/ui',
  },
  meta: {
    name: 'ShadcnVue',
    configKey: 'shadcn',
    version: '0.0.1',
    compatibility: {
      nuxt: '>=3.17.0',
    },
  },
  async setup({ componentDir, prefix }, nuxt) {
    const COMPONENT_DIR_PATH = componentDir!
    const ROOT_DIR_PATH = nuxt.options.rootDir
    const { resolve, resolvePath } = createResolver(ROOT_DIR_PATH)

    const componentsPath = await resolvePath(COMPONENT_DIR_PATH)

    addComponentsDir({
      path: componentsPath,
      extensions: [],
      ignore: ['**/*'],
    }, {
      prepend: true,
    })

    try {
      await Promise.all(readdirSync(componentsPath).map(async (dir) => {
        try {
          const filePath = await resolvePath(join(COMPONENT_DIR_PATH, dir, 'index'), { extensions: ['.ts', '.js'] })

          addComponentExports({
            prefix,
            filePath: resolve(filePath),
            priority: 1,
          })
        }
        catch (err) {
          if (err instanceof Error)
            console.warn('Module error: ', err.message)
        }
      }))
    }
    catch (err) {
      if (err instanceof Error)
        console.warn(err.message)
    }
  },
})

Atur nuxt.config.ts ​

ts
export default defineNuxtConfig({
  // ...
  modules: ['shadcn-nuxt'],
  shadcn: {
    /**
     * Prefix for all the imported component.
     * @default "Ui"
     */
    prefix: '',
    /**
     * Directory that the component lives in.
     * Will respect the Nuxt aliases.
     * @link https://nuxt.com/docs/api/nuxt-config#alias
     * @default "@/components/ui"
     */
    componentDir: '@/components/ui'
  }
})

Tambahkan plugin ssrWidth (opsional) ​

Sebagian komponen perlu nilai ssrWidth yang diatur lewat VueUse, agar tidak terjadi error hydration di perangkat mobile.

Tambahkan plugin berikut ke aplikasi Nuxt Anda di app/plugins/ssr-width.ts.

Penjelasan lebih lanjut ada di useSSRWidth.

ts
import { provideSSRWidth } from '@vueuse/core'

export default defineNuxtPlugin((nuxtApp) => {
  provideSSRWidth(1024, nuxtApp.vueApp)
})

Jalankan Nuxt Prepare ​

Kalau ini project baru, jalankan perintah berikut supaya Nuxt menghasilkan folder .nuxt yang dibutuhkan:

bash
npx nuxi prepare

Jalankan CLI ​

Jalankan perintah init untuk menyiapkan project Anda:

bash
npx shadcn-vue@latest init

Anda akan ditanya beberapa hal untuk mengisi components.json.

txt
Which color would you like to use as base color? › Neutral

Tambahkan komponen ​

Sekarang Anda bisa mulai menambahkan komponen ke project.

bash
npx shadcn-vue@latest add button

Perintah di atas menambahkan komponen Button ke project Anda. Fitur auto-import Nuxt yang akan mengurus import-nya, jadi Anda bisa langsung memakainya:

vue
<template>
  <div>
    <Button>Klik saya</Button>
  </div>
</template>
1
2
3
4
5
ViteAstro

Di halaman ini

Buat projectPasang Tailwind CSSPasang module NuxtAtur nuxt.config.tsTambahkan plugin ssrWidth (opsional)Jalankan Nuxt PrepareJalankan CLITambahkan komponen
Dirilis di bawah lisensi MIT. Ditulis ulang untuk Vue dari shadcn-vue, shadcn-ui-blocks, dan shadcn-hooks. Hak cipta © 2026 Kliping