Skip to content

Commit f26f991

Browse files
committed
fix: requireResolve tailwindcss
1 parent a751505 commit f26f991

File tree

4 files changed

+27
-13
lines changed

4 files changed

+27
-13
lines changed

.vscode/launch.json

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
11
{
2-
// 使用 IntelliSense 了解相关属性。
2+
// 使用 IntelliSense 了解相关属性。
33
// 悬停以查看现有属性的描述。
44
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
55
"version": "0.2.0",
66
"configurations": [
7+
{
8+
"command": "pnpm tw-extract",
9+
"name": "[vite-vue] tw-extract",
10+
"request": "launch",
11+
"type": "node-terminal",
12+
"cwd": "${workspaceFolder}/apps/vite-vue"
13+
},
714
{
815
"command": "pnpm start",
916
"name": "[scripts] postcss7-compat run",
@@ -117,4 +124,4 @@
117124
"cwd": "${workspaceFolder}/packages/core"
118125
}
119126
]
120-
}
127+
}

packages/tailwindcss-patch/src/core/postcss.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import process from 'node:process'
33
import postcss from 'postcss'
44
import { lilconfig } from 'lilconfig'
55
import createJiti from 'jiti'
6+
import { requireResolve } from '@/utils'
67

78
const jiti = createJiti(__filename)
89

@@ -36,10 +37,12 @@ export async function processTailwindcss(options: { cwd?: string, config?: strin
3637
}
3738
config = result.filepath
3839
}
39-
40+
const id = requireResolve('tailwindcss', {
41+
basedir: options.cwd,
42+
})
4043
return await postcss([
4144
// eslint-disable-next-line ts/no-var-requires, ts/no-require-imports
42-
require('tailwindcss')({
45+
require(id)({
4346
config,
4447
}),
4548
]).process('@tailwind base;@tailwind components;@tailwind utilities;', {

packages/unplugin-tailwindcss-mangle/src/core/plugin.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { dirname } from 'node:path'
22
import fs from 'node:fs/promises'
33
import { createUnplugin } from 'unplugin'
44
import type { OutputAsset } from 'rollup'
5-
import { Context, cssHandler, htmlHandler, jsHandler, preProcessJs, preProcessRawCode } from '@tailwindcss-mangle/core'
5+
import { Context, cssHandler, htmlHandler, jsHandler, preProcessJs, preProcessRawCode, vueHandler } from '@tailwindcss-mangle/core'
66
import type { ClassMapOutputOptions, MangleUserConfig } from '@tailwindcss-mangle/config'
77
import MagicString from 'magic-string'
88
import { pluginName } from '@/constants'
@@ -26,17 +26,25 @@ export const unplugin = createUnplugin((options?: MangleUserConfig) => {
2626
transform(code, id) {
2727
const s = new MagicString(code)
2828
// 直接忽略 css 文件,因为此时 tailwindcss 还没有展开
29-
return /\.[jt]sx?$/.test(id)
30-
? preProcessJs({
29+
if (/\.[jt]sx?$/.test(id)) {
30+
return preProcessJs({
3131
code: s,
3232
ctx,
3333
id,
3434
})
35-
: preProcessRawCode({
35+
}
36+
else if (/\.vue/.test(id)) {
37+
return vueHandler(code, {
38+
ctx,
39+
})
40+
}
41+
else {
42+
return preProcessRawCode({
3643
code,
3744
ctx,
3845
id,
3946
})
47+
}
4048
},
4149
vite: {
4250
generateBundle: {

packages/unplugin-tailwindcss-mangle/test/__snapshots__/webpack.test.ts.snap

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -509,11 +509,7 @@ exports[`webpack build > common > warnings 1`] = `[]`;
509509

510510
exports[`webpack build > with plugin > assets 1`] = `
511511
{
512-
"index.js": "(() => {
513-
"use strict";
514-
515-
document.querySelector("#app").innerHTML = '\\n<main class="flex tw-gb tw-zb tw-db tw-ra tw-nc">\\n<div class="tw-sc tw-hc tw-vb tw-db tw-ra tw-pb tw-dc tw-bc">\\n <p\\n class="fixed tw-ec tw-kc flex tw-hc tw-va tw-xb tw-pa tw-ja tw-za tw-oc tw-pc tw-ca tw-l tw-v tw-ea tw-tb tw-ub tw-ab tw-rb tw-wa tw-gc tw-m">\\n Get started by editing&nbsp;\\n <code class="tw-pb tw-ob">pages/index.tsx</code>\\n </p>\\n <div\\n class="fixed tw-yb tw-ec flex tw-lc tw-hc tw-qb tw-va tw-ka tw-kb tw-wb tw-qa tw-ua tw-tb tw-sb tw-ub tw-lb">\\n <a class="tw-w flex tw-ba tw-ic tw-uc tw-n tw-fc"\\n href="https://vercel.com?utm_source=create-next-app&utm_medium=default-template-tw&utm_campaign=create-next-app"\\n target="_blank" rel="noopener noreferrer">\\n By\\n </a>\\n </div>\\n</div>\\n\\n<div\\n class="relative flex tw-ba tw-na tw-ha tw-ia tw-k tw-u before:bg-gradient-radial tw-da tw-p tw-oa tw-s tw-sa tw-hb tw-la tw-ma tw-o after:bg-gradient-conic tw-y tw-z tw-ta tw-x tw-b tw-d tw-h tw-j tw-g tw-t">\\n <img class="relative tw-a tw-ib" src="/vite.svg" alt="Next.js Logo"\\n priority />\\n</div>\\n\\n<div class="tw-jc grid tw-jb tw-cc tw-xa tw-eb">\\n <a href="https://nextjs.org/docs?utm_source=create-next-app&utm_medium=default-template-tw&utm_campaign=create-next-app"\\n class="group tw-nb border tw-aa tw-qc tw-rc tw-ga tw-q tw-fa tw-c tw-e"\\n target="_blank" rel="noopener noreferrer">\\n <h2 class="tw-mc tw-ac tw-ya">\\n Docs <span\\n class="tw-cb tw-r tw-i tw-f">-&gt;</span>\\n </h2>\\n <p class="tw-tc tw-fb tw-dc tw-mb">Find in-depth information about Next.js\\n features and API.</p>\\n </a>\\n\\n <a href="https://nextjs.org/learn?utm_source=create-next-app&utm_medium=default-template-tw&utm_campaign=create-next-app"\\n class="group tw-nb border tw-aa tw-qc tw-rc tw-ga tw-q tw-fa tw-c tw-e"\\n target="_blank" rel="noopener noreferrer">\\n <h2 class="tw-mc tw-ac tw-ya">\\n Learn <span\\n class="tw-cb tw-r tw-i tw-f">-&gt;</span>\\n </h2>\\n <p class="tw-tc tw-fb tw-dc tw-mb">Learn about Next.js in an interactive\\n course with&nbsp;quizzes!</p>\\n </a>\\n\\n <a href="https://vercel.com/templates?framework=next.js&utm_source=create-next-app&utm_medium=default-template-tw&utm_campaign=create-next-app"\\n class="group tw-nb border tw-aa tw-qc tw-rc tw-ga tw-q tw-fa tw-c tw-e"\\n target="_blank" rel="noopener noreferrer">\\n <h2 class="tw-mc tw-ac tw-ya">\\n Templates <span\\n class="tw-cb tw-r tw-i tw-f">-&gt;</span>\\n </h2>\\n <p class="tw-tc tw-fb tw-dc tw-mb">Discover and deploy boilerplate example\\n Next.js&nbsp;projects.</p>\\n </a>\\n\\n <a href="https://vercel.com/new?utm_source=create-next-app&utm_medium=default-template-tw&utm_campaign=create-next-app"\\n class="group tw-nb border tw-aa tw-qc tw-rc tw-ga tw-q tw-fa tw-c tw-e"\\n target="_blank" rel="noopener noreferrer">\\n <h2 class="tw-mc tw-ac tw-ya">\\n Deploy <span\\n class="tw-cb tw-r tw-i tw-f">-&gt;</span>\\n </h2>\\n <p class="tw-tc tw-fb tw-dc tw-mb">Instantly deploy your Next.js site to a\\n shareable URL with Vercel.</p>\\n </a>\\n</div>\\n</main>\\n';
516-
})();",
512+
"index.js": "(()=>{"use strict";document.querySelector("#app").innerHTML='\\n<main class="flex tw-gb tw-zb tw-db tw-ra tw-nc">\\n<div class="tw-sc tw-hc tw-vb tw-db tw-ra tw-pb tw-dc tw-bc">\\n <p\\n class="fixed tw-ec tw-kc flex tw-hc tw-va tw-xb tw-pa tw-ja tw-za tw-oc tw-pc tw-ca tw-l tw-v tw-ea tw-tb tw-ub tw-ab tw-rb tw-wa tw-gc tw-m">\\n Get started by editing&nbsp;\\n <code class="tw-pb tw-ob">pages/index.tsx</code>\\n </p>\\n <div\\n class="fixed tw-yb tw-ec flex tw-lc tw-hc tw-qb tw-va tw-ka tw-kb tw-wb tw-qa tw-ua tw-tb tw-sb tw-ub tw-lb">\\n <a class="tw-w flex tw-ba tw-ic tw-uc tw-n tw-fc"\\n href="https://vercel.com?utm_source=create-next-app&utm_medium=default-template-tw&utm_campaign=create-next-app"\\n target="_blank" rel="noopener noreferrer">\\n By\\n </a>\\n </div>\\n</div>\\n\\n<div\\n class="relative flex tw-ba tw-na tw-ha tw-ia tw-k tw-u before:bg-gradient-radial tw-da tw-p tw-oa tw-s tw-sa tw-hb tw-la tw-ma tw-o after:bg-gradient-conic tw-y tw-z tw-ta tw-x tw-b tw-d tw-h tw-j tw-g tw-t">\\n <img class="relative tw-a tw-ib" src="/vite.svg" alt="Next.js Logo"\\n priority />\\n</div>\\n\\n<div class="tw-jc grid tw-jb tw-cc tw-xa tw-eb">\\n <a href="https://nextjs.org/docs?utm_source=create-next-app&utm_medium=default-template-tw&utm_campaign=create-next-app"\\n class="group tw-nb border tw-aa tw-qc tw-rc tw-ga tw-q tw-fa tw-c tw-e"\\n target="_blank" rel="noopener noreferrer">\\n <h2 class="tw-mc tw-ac tw-ya">\\n Docs <span\\n class="tw-cb tw-r tw-i tw-f">-&gt;</span>\\n </h2>\\n <p class="tw-tc tw-fb tw-dc tw-mb">Find in-depth information about Next.js\\n features and API.</p>\\n </a>\\n\\n <a href="https://nextjs.org/learn?utm_source=create-next-app&utm_medium=default-template-tw&utm_campaign=create-next-app"\\n class="group tw-nb border tw-aa tw-qc tw-rc tw-ga tw-q tw-fa tw-c tw-e"\\n target="_blank" rel="noopener noreferrer">\\n <h2 class="tw-mc tw-ac tw-ya">\\n Learn <span\\n class="tw-cb tw-r tw-i tw-f">-&gt;</span>\\n </h2>\\n <p class="tw-tc tw-fb tw-dc tw-mb">Learn about Next.js in an interactive\\n course with&nbsp;quizzes!</p>\\n </a>\\n\\n <a href="https://vercel.com/templates?framework=next.js&utm_source=create-next-app&utm_medium=default-template-tw&utm_campaign=create-next-app"\\n class="group tw-nb border tw-aa tw-qc tw-rc tw-ga tw-q tw-fa tw-c tw-e"\\n target="_blank" rel="noopener noreferrer">\\n <h2 class="tw-mc tw-ac tw-ya">\\n Templates <span\\n class="tw-cb tw-r tw-i tw-f">-&gt;</span>\\n </h2>\\n <p class="tw-tc tw-fb tw-dc tw-mb">Discover and deploy boilerplate example\\n Next.js&nbsp;projects.</p>\\n </a>\\n\\n <a href="https://vercel.com/new?utm_source=create-next-app&utm_medium=default-template-tw&utm_campaign=create-next-app"\\n class="group tw-nb border tw-aa tw-qc tw-rc tw-ga tw-q tw-fa tw-c tw-e"\\n target="_blank" rel="noopener noreferrer">\\n <h2 class="tw-mc tw-ac tw-ya">\\n Deploy <span\\n class="tw-cb tw-r tw-i tw-f">-&gt;</span>\\n </h2>\\n <p class="tw-tc tw-fb tw-dc tw-mb">Instantly deploy your Next.js site to a\\n shareable URL with Vercel.</p>\\n </a>\\n</div>\\n</main>\\n'})();",
517513
"main.css": "*,::before,::after {
518514
--tw-border-spacing-x: 0;
519515
--tw-border-spacing-y: 0;

0 commit comments

Comments
 (0)