chore: migrate to @nuxt/module-builder

This commit is contained in:
Benjamin Canac
2022-01-21 14:32:11 +01:00
parent 78013a7b25
commit 39bba82079
9 changed files with 1145 additions and 503 deletions

View File

@@ -1,11 +0,0 @@
export default {
declaration: true,
rollup: { cjsBridge: true },
entries: [
'./src/module',
{ input: 'src/runtime/', outDir: 'dist/runtime' },
{ input: 'src/presets/', outDir: 'dist/presets' },
{ input: 'src/css/', outDir: 'dist/css' }
],
externals: ['@nuxt/kit', '@nuxt/schema', '@unocss/preset-uno']
}

View File

@@ -4,27 +4,33 @@
"repository": "https://github.com/nuxtlabs/ui", "repository": "https://github.com/nuxtlabs/ui",
"license": "MIT", "license": "MIT",
"exports": { "exports": {
".": "./dist/module.mjs" ".": {
"import": "./dist/module.mjs",
"require": "./dist/module.cjs"
}
}, },
"main": "./dist/module.mjs", "main": "./dist/module.cjs",
"types": "./dist/module.d.ts", "types": "./dist/types.d.ts",
"files": [ "files": [
"dist" "dist"
], ],
"scripts": { "scripts": {
"build": "unbuild", "build": "nuxt-module-build",
"prepack": "yarn build",
"dev": "nuxi dev docs", "dev": "nuxi dev docs",
"build:docs": "nuxi build docs", "build:docs": "nuxi build docs",
"postbuild:docs": "mv ./docs/.vercel_build_output .vercel_build_output", "postbuild:docs": "mv ./docs/.vercel_build_output .vercel_build_output",
"lint": "eslint --ext .ts,.js,.vue ." "lint": "eslint --ext .ts,.js,.vue .",
"release": "yarn lint && standard-version && git push --follow-tags"
}, },
"dependencies": { "dependencies": {
"@nuxt/kit": "npm:@nuxt/kit-edge@latest",
"@headlessui/vue": "^1.4.3", "@headlessui/vue": "^1.4.3",
"@iconify-json/heroicons-outline": "^1.0.2", "@iconify-json/heroicons-outline": "^1.0.2",
"@iconify-json/heroicons-solid": "^1.0.2", "@iconify-json/heroicons-solid": "^1.0.2",
"@popperjs/core": "^2.11.2", "@popperjs/core": "^2.11.2",
"@unocss/nuxt": "^0.22.4", "@unocss/nuxt": "^0.22.5",
"@vueuse/core": "^7.5.3", "@vueuse/core": "^7.5.4",
"defu": "^5.0.1", "defu": "^5.0.1",
"gradient-avatar": "^1.0.2", "gradient-avatar": "^1.0.2",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
@@ -32,12 +38,15 @@
"pathe": "^0.2.0" "pathe": "^0.2.0"
}, },
"devDependencies": { "devDependencies": {
"@nuxt/schema": "npm:@nuxt/schema-edge@latest", "@nuxt/module-builder": "0.1.6",
"@nuxtjs/eslint-config-typescript": "^8.0.0", "@nuxtjs/eslint-config-typescript": "^8.0.0",
"@types/lodash-es": "^4.17.5", "@types/lodash-es": "^4.17.5",
"@vueuse/components": "^7.5.3", "@vueuse/components": "^7.5.4",
"eslint": "^8.7.0", "eslint": "^8.7.0",
"nuxt3": "latest", "nuxt3": "latest",
"unbuild": "^0.6.7" "standard-version": "^9.3.2"
},
"build": {
"externals": ["@unocss/preset-uno"]
} }
} }

View File

@@ -3,8 +3,34 @@ import { defineNuxtModule, installModule, addComponentsDir, addTemplate, addPlug
import { colors } from '@unocss/preset-uno' import { colors } from '@unocss/preset-uno'
import defu from 'defu' import defu from 'defu'
import type { UnocssNuxtOptions } from '@unocss/nuxt' import type { UnocssNuxtOptions } from '@unocss/nuxt'
import type { Nuxt } from '@nuxt/schema'
import type { UiOptions } from './types' interface ColorsOptions {
/**
* @default 'indigo'
*/
primary?: string
/**
* @default 'zinc'
*/
gray?: string
}
export interface ModuleOptions {
/**
* @default 'tailwindui'
*/
preset?: string | object
/**
* @default 'u'
*/
prefix?: string
colors?: ColorsOptions
unocss?: UnocssNuxtOptions
}
const defaults = { const defaults = {
preset: 'tailwindui', preset: 'tailwindui',
@@ -21,7 +47,7 @@ const defaults = {
} }
} }
export default defineNuxtModule<UiOptions>({ export default defineNuxtModule<ModuleOptions>({
meta: { meta: {
name: '@nuxthq/ui', name: '@nuxthq/ui',
configKey: 'ui', configKey: 'ui',
@@ -31,7 +57,7 @@ export default defineNuxtModule<UiOptions>({
} }
}, },
defaults, defaults,
async setup (_options: UiOptions, nuxt: Nuxt) { async setup (_options, nuxt) {
const { preset, prefix, colors: { primary = 'indigo', gray = 'zinc' } = {} } = _options const { preset, prefix, colors: { primary = 'indigo', gray = 'zinc' } = {} } = _options
const { shortcuts = [], rules = [], variants = [], theme = {} } = _options.unocss || {} const { shortcuts = [], rules = [], variants = [], theme = {} } = _options.unocss || {}
@@ -136,7 +162,7 @@ export default defineNuxtModule<UiOptions>({
nuxt.options.build.transpile.push(runtimeDir) nuxt.options.build.transpile.push(runtimeDir)
nuxt.options.build.transpile.push('@popperjs/core', '@headlessui/vue') nuxt.options.build.transpile.push('@popperjs/core', '@headlessui/vue')
const presetsDir = resolve(__dirname, './presets') const presetsDir = resolve(runtimeDir, './presets')
let ui: object = (await import(resolveModule(`./${defaults.preset}`, { paths: presetsDir }))).default let ui: object = (await import(resolveModule(`./${defaults.preset}`, { paths: presetsDir }))).default
try { try {
@@ -195,17 +221,6 @@ export default defineNuxtModule<UiOptions>({
}) })
// Add CSS // Add CSS
nuxt.options.css.push(resolve(__dirname, './css/forms.css')) nuxt.options.css.push(resolve(runtimeDir, 'css', 'forms.css'))
} }
}) })
export * from './types'
declare module '@nuxt/schema' {
interface NuxtConfig {
ui?: UiOptions
}
interface NuxtOptions {
ui?: UiOptions
}
}

View File

@@ -1,7 +1,7 @@
import { nanoid } from 'nanoid' import { nanoid } from 'nanoid'
import { Ref } from 'vue' import { Ref } from 'vue'
import { defineNuxtPlugin, useState } from '#app' import { defineNuxtPlugin, useState } from '#app'
import { ToastNotification, ToastPlugin } from '../../types' import { ToastNotification, ToastPlugin } from '../types/toast'
export default defineNuxtPlugin((nuxtApp) => { export default defineNuxtPlugin((nuxtApp) => {
const notifications: Ref<ToastNotification[]> = useState('notifications', () => []) const notifications: Ref<ToastNotification[]> = useState('notifications', () => [])

View File

@@ -1,31 +0,0 @@
import type { UnocssNuxtOptions } from '@unocss/nuxt'
export interface UiColorsOptions {
/**
* @default 'indigo'
*/
primary?: string
/**
* @default 'zinc'
*/
gray?: string
}
export interface UiOptions {
/**
* @default 'tailwindui'
*/
preset?: string | object
/**
* @default 'u'
*/
prefix?: string
colors?: UiColorsOptions
unocss?: UnocssNuxtOptions
}
export * from './toast'

1526
yarn.lock

File diff suppressed because it is too large Load Diff