diff --git a/package.json b/package.json index 3923954f..44281d2b 100755 --- a/package.json +++ b/package.json @@ -24,6 +24,11 @@ "types": "./dist/merger.d.ts", "require": "./dist/merger.cjs", "import": "./dist/merger.mjs" + }, + "./config-ctx": { + "types": "./dist/config-ctx.d.ts", + "require": "./dist/config-ctx.cjs", + "import": "./dist/config-ctx.mjs" } }, "main": "./dist/module.cjs", @@ -34,7 +39,8 @@ "build": { "entries": [ "./src/config", - "./src/merger" + "./src/merger", + "./src/config-ctx" ], "externals": [ "@tailwindcss/vite" @@ -101,7 +107,8 @@ "packageManager": "pnpm@9.15.3", "resolutions": { "@nuxtjs/tailwindcss": "link:.", - "@nuxt/ui": "npm:@nuxt/ui-edge" + "@nuxt/ui": "npm:@nuxt/ui-edge", + "unicorn-magic": "0.2.0" }, "stackblitz": { "startCommand": "pnpm dev:prepare && pnpm dev" diff --git a/playground/tailwind.config.ts b/playground/tailwind.config.ts index 44374f74..2d94744d 100644 --- a/playground/tailwind.config.ts +++ b/playground/tailwind.config.ts @@ -1,7 +1,8 @@ import typography from '@tailwindcss/typography' import colors from 'tailwindcss/colors' +import { defineConfig } from '../src/config' -export default { +export default defineConfig({ theme: { extend: { colors: { @@ -15,4 +16,4 @@ export default { plugins: [ typography(), ], -} +}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 00c45533..d790e99c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,6 +7,7 @@ settings: overrides: '@nuxtjs/tailwindcss': link:. '@nuxt/ui': npm:@nuxt/ui-edge + unicorn-magic: 0.2.0 importers: @@ -6498,12 +6499,8 @@ packages: unicode-trie@2.0.0: resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} - unicorn-magic@0.1.0: - resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} - engines: {node: '>=18'} - - unicorn-magic@0.3.0: - resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + unicorn-magic@0.2.0: + resolution: {integrity: sha512-q83y+/QtXrbKX1jYY+bdQROAbZj6EeSP+Plv0cYZBMPfirSaEvnnhMwRk2WH4n5XkNCQHygAiwTVNpvw3I1dCg==} engines: {node: '>=18'} unified@11.0.5: @@ -8456,14 +8453,14 @@ snapshots: '@iconify/utils': 2.3.0 '@iconify/vue': 4.3.0(vue@3.5.13(typescript@5.6.3)) '@nuxt/devtools-kit': 1.7.0(magicast@0.3.5)(vite@6.3.2(@types/node@22.13.9)(jiti@2.4.2)(terser@5.39.0)(yaml@2.7.0)) - '@nuxt/kit': 3.16.0(magicast@0.3.5) - consola: 3.4.0 + '@nuxt/kit': 3.16.2(magicast@0.3.5) + consola: 3.4.2 local-pkg: 0.5.1 mlly: 1.7.4 ohash: 1.1.6 pathe: 1.1.2 picomatch: 4.0.2 - std-env: 3.8.1 + std-env: 3.9.0 tinyglobby: 0.2.12 transitivePeerDependencies: - magicast @@ -8646,7 +8643,7 @@ snapshots: '@headlessui/vue': 1.7.23(vue@3.5.13(typescript@5.6.3)) '@iconify-json/heroicons': 1.2.2 '@nuxt/icon': 1.10.3(magicast@0.3.5)(vite@6.3.2(@types/node@22.13.9)(jiti@2.4.2)(terser@5.39.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3)) - '@nuxt/kit': 3.16.0(magicast@0.3.5) + '@nuxt/kit': 3.16.2(magicast@0.3.5) '@nuxtjs/color-mode': 3.5.2(magicast@0.3.5) '@nuxtjs/tailwindcss': 'link:' '@popperjs/core': 2.11.8 @@ -8855,7 +8852,7 @@ snapshots: '@nuxtjs/color-mode@3.5.2(magicast@0.3.5)': dependencies: - '@nuxt/kit': 3.16.0(magicast@0.3.5) + '@nuxt/kit': 3.16.2(magicast@0.3.5) pathe: 1.1.2 pkg-types: 1.3.1 semver: 7.7.1 @@ -11540,7 +11537,7 @@ snapshots: dependencies: locate-path: 7.2.0 path-exists: 5.0.0 - unicorn-magic: 0.1.0 + unicorn-magic: 0.2.0 flat-cache@4.0.1: dependencies: @@ -11803,7 +11800,7 @@ snapshots: ignore: 7.0.3 path-type: 6.0.0 slash: 5.1.0 - unicorn-magic: 0.3.0 + unicorn-magic: 0.2.0 gonzales-pe@4.3.0: dependencies: @@ -13217,7 +13214,7 @@ snapshots: npm-run-path@6.0.0: dependencies: path-key: 4.0.0 - unicorn-magic: 0.3.0 + unicorn-magic: 0.2.0 npmlog@5.0.1: dependencies: @@ -14171,7 +14168,7 @@ snapshots: normalize-package-data: 6.0.2 parse-json: 8.1.0 type-fest: 4.37.0 - unicorn-magic: 0.1.0 + unicorn-magic: 0.2.0 readable-stream@2.3.8: dependencies: @@ -15147,9 +15144,7 @@ snapshots: pako: 0.2.9 tiny-inflate: 1.0.3 - unicorn-magic@0.1.0: {} - - unicorn-magic@0.3.0: {} + unicorn-magic@0.2.0: {} unified@11.0.5: dependencies: diff --git a/src/config-ctx.ts b/src/config-ctx.ts new file mode 100644 index 00000000..4c305dbd --- /dev/null +++ b/src/config-ctx.ts @@ -0,0 +1,3 @@ +import { ctx } from './config' + +ctx.set(true) diff --git a/src/config.ts b/src/config.ts index d0d5fc87..ef591326 100644 --- a/src/config.ts +++ b/src/config.ts @@ -1,5 +1,13 @@ import { createDefineConfig } from 'c12' +import { getContext } from 'unctx' +import { tryUseNuxt, requireModule } from '@nuxt/kit' import type { Config } from 'tailwindcss' -export const defineConfig = createDefineConfig>() +export const ctx = getContext('tw-config-ctx') + +const _defineConfig = createDefineConfig>() +export const defineConfig: typeof _defineConfig = (config) => { + const isNuxt = !!tryUseNuxt() + return isNuxt || ctx.tryUse() ? config : requireModule('.nuxt/tailwind/postcss.mjs') +} export default defineConfig diff --git a/src/internal-context/load.ts b/src/internal-context/load.ts index 2629f2cc..153ef7f2 100644 --- a/src/internal-context/load.ts +++ b/src/internal-context/load.ts @@ -216,6 +216,7 @@ const createInternalContext = async (moduleOptions: ModuleOptions, nuxt = useNux return [ `// generated by the @nuxtjs/tailwindcss module at ${(new Date()).toLocaleString()}`, + 'import "@nuxtjs/tailwindcss/config-ctx"', `import configMerger from "@nuxtjs/tailwindcss/merger";\n`, layerConfigs.map(([i, _]) => i).filter(Boolean).join(';\n') + ';', 'const config = [',