Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions packages/vuetify/.eslintignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,7 @@
/lib-temp/
/dist/
/cypress/
/unimport-presets/
/unplugin-vue-components-resolvers/
*.spec.cy.ts
*.spec.cy.tsx
2 changes: 2 additions & 0 deletions packages/vuetify/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
/types-temp/
/dist/
/dev/dist/
/unplugin-vue-components-resolvers/
/unimport-presets/

# local env files
.env.local
Expand Down
2 changes: 1 addition & 1 deletion packages/vuetify/build/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export const banner = `/*!
export const root = path.resolve(fileURLToPath(import.meta.url), '../..')
export const srcDir = path.resolve(root, 'src')
export const libDir = path.resolve(root, 'lib')
export const unpluginLibDistDir = path.resolve(libDir, 'unplugin')
export const nodeLibDistDir = path.resolve(libDir, 'node')
export const labsDir = path.resolve(srcDir, 'labs')

export const externals = Array.from(Object.keys(packageJson.devDependencies))
103 changes: 103 additions & 0 deletions packages/vuetify/build/node-rollup.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
import { banner, externals, root, nodeLibDistDir } from './constants.js'
import { nodeResolve } from "@rollup/plugin-node-resolve"
import { babel } from '@rollup/plugin-babel'
import { rm } from 'node:fs/promises'
import { resolve } from 'node:path'
import dts from 'rollup-plugin-dts'

const extensions = ['.ts']

export function unpluginModules() {
return [
unpluginModule('unplugin-vue-components-resolvers'),
unpluginModule('unimport-presets'),
]
}

export function unpluginTypes() {
return [
unpluginDts('unplugin-vue-components-resolvers'),
unpluginDts('unimport-presets'),
]
}

/**
* @param name {'components' | 'unimport'}
* @returns {import("rollup").RollupOptions}
*/
function unpluginModule(name) {
const input = `src/node/${name}.ts`
const file = `${name}/index`
/** @type {import("rollup").RollupOptions} */
const config = {
input,
external: [
'vuetify',
'vuetify/directives',
'vuetify/components',
'vuetify/labs/components',
'unplugin-vue-components/types',
...externals,
],
output: [{
file: `${file}.js`,
format: 'esm',
generatedCode: { constBindings: true },
externalLiveBindings: false,
freeze: false,
banner,
}],
onwarn(warning, rollupWarn) {
if (!warning.code || !["CIRCULAR_DEPENDENCY"].includes(warning.code)) {
rollupWarn(warning);
}
},
plugins: [
nodeResolve({ extensions }),
babel({
extensions,
}),
{
async buildEnd() {
// cleanup lib/node folder
await rm(nodeLibDistDir, { force: true, recursive: true })
},
},
],
}
return config
}

/**
* @param name {'components' | 'unimport'}
* @returns {import("rollup").RollupOptions}
*/
function unpluginDts(name) {
const dir = `${root}/${name}`
/** @type {import("rollup").RollupOptions} */
const config = {
input: `src/node/${name}.ts`,
external: [
'vuetify',
'vuetify/directives',
'vuetify/components',
'vuetify/labs/components',
'unplugin-vue-components/types',
...externals,
],
output: [{
dir,
entryFileNames: 'index.d.ts',
format: 'esm',
banner,
}],
plugins: [
dts({
dir: `${root}/${name}`,
respectExternal: true,
tsconfig: resolve(root, 'tsconfig.node-dist.json'),
}),
],
}
return config
}
2 changes: 2 additions & 0 deletions packages/vuetify/build/rollup.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import {
root,
srcDir,
} from './constants.js'
import { unpluginModules } from './node-rollup.config.js'

const extensions = ['.ts', '.tsx', '.js', '.jsx', '.es6', '.es', '.mjs']

Expand Down Expand Up @@ -306,6 +307,7 @@ const options = [
}
],
},
...unpluginModules(),
]

export default options
3 changes: 3 additions & 0 deletions packages/vuetify/build/rollup.types.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import MagicString from 'magic-string'
import importMap from '../dist/json/importMap.json' with { type: 'json' }
import importMapLabs from '../dist/json/importMap-labs.json' with { type: 'json' }

import { unpluginTypes } from './node-rollup.config.js'

/**
* @param code {string}
* @returns {string}
Expand Down Expand Up @@ -108,6 +110,7 @@ const options = [
code.append('\n\n')
code.append(await getShims(true))
}),
unpluginTypes(),
].flat()

export default options
17 changes: 14 additions & 3 deletions packages/vuetify/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@
"files": [
"dist/",
"lib/",
"unplugin-vue-components-resolvers/",
"unimport-presets/",
"_settings.scss",
"_styles.scss",
"_tools.scss",
Expand Down Expand Up @@ -87,10 +89,18 @@
"default": "./dist/vuetify-labs.cjs"
},
"./*.mjs": "./*.js",
"./*": "./*"
"./*": "./*",
"./unplugin-vue-components-resolvers": "./unplugin-vue-components-resolvers/index.js",
"./unimport-presets": "./unimport-presets/index.js"
},
"typesVersions": {
"*": {
"unplugin-vue-components-resolvers": [
"unplugin-vue-components-resolvers/index.d.ts"
],
"unimport-presets": [
"unimport-presets/index.d.ts"
],
"*": [
"*",
"dist/*",
Expand All @@ -109,7 +119,7 @@
"dev:ssr": "NODE_ENV=development VITE_SSR=true vite-ssr",
"dev:prod": "concurrently \"vite build -w\" \"vite preview\"",
"dev:typecheck": "vue-tsc --noEmit --skipLibCheck --project ./tsconfig.dev.json",
"build": "rimraf lib dist && concurrently \"pnpm run build:dist\" \"pnpm run build:lib\" -n \"dist,lib\" --kill-others-on-fail -r && pnpm run build:types",
"build": "rimraf lib dist unplugin-vue-components-resolvers unimport-presets && concurrently \"pnpm run build:dist\" \"pnpm run build:lib\" -n \"dist,lib\" --kill-others-on-fail -r && pnpm run build:types",
"build:dist": "rollup --config build/rollup.config.js",
"build:lib": "NODE_ENV=lib babel src --out-dir lib --source-maps --extensions \".ts\",\".tsx\",\".snap\" --copy-files --no-copy-ignored --out-file-extension .js",
"build:types": "tspc --pretty --emitDeclarationOnly -p tsconfig.dist.json && node build/transform-types.js && rollup --config build/rollup.types.config.js",
Expand Down Expand Up @@ -187,8 +197,9 @@
"ts-node": "^10.9.2",
"ts-patch": "^3.2.1",
"typescript-transform-paths": "^3.5.1",
"unimport": "^4.1.2",
"unplugin-auto-import": "19.1.0",
"unplugin-vue-components": "^0.27.4",
"unplugin-vue-components": "^28.4.1",
"upath": "^2.0.1",
"vite": "^6.1.0",
"vite-ssr": "^0.17.1",
Expand Down
20 changes: 20 additions & 0 deletions packages/vuetify/src/node/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
export interface VuetifyComponent {
from: string
}
// eslint-disable-next-line @typescript-eslint/consistent-type-imports
export type ComponentName = keyof typeof import('vuetify/components')
// eslint-disable-next-line @typescript-eslint/consistent-type-imports
export type LabComponentName = keyof typeof import('vuetify/labs/components')
// eslint-disable-next-line @typescript-eslint/consistent-type-imports
export type DirectiveName = keyof typeof import('vuetify/directives')
export interface VuetifyComponents {
[key: string]: VuetifyComponent
}
export interface ImportComponents {
components: VuetifyComponents
directives: DirectiveName[]
}
export interface ImportLabsComponents {
[key: string]: VuetifyComponent
}
export type ImportMaps = [importMaps: Promise<ImportComponents>, importMapsLabs: Promise<ImportLabsComponents>]
Loading