From d53a3654f320c7a7498ed3379e70dc5bea08418d Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Sun, 21 Aug 2022 22:19:57 +0800 Subject: [PATCH] fix(webpack): only load necessary modules --- packages/transformer-directives/src/index.ts | 8 +++++++- packages/webpack/package.json | 2 +- packages/webpack/src/index.ts | 21 ++++++++++++++------ pnpm-lock.yaml | 8 ++++---- 4 files changed, 27 insertions(+), 12 deletions(-) diff --git a/packages/transformer-directives/src/index.ts b/packages/transformer-directives/src/index.ts index 939343acee..6d14772fb3 100644 --- a/packages/transformer-directives/src/index.ts +++ b/packages/transformer-directives/src/index.ts @@ -3,7 +3,6 @@ import type { SourceCodeTransformer, StringifiedUtil, UnoGenerator } from '@unoc import type { Atrule, CssNode, Declaration, List, ListItem, Rule, Selector, SelectorList } from 'css-tree' import { clone, generate, parse, walk } from 'css-tree' import type MagicString from 'magic-string' -import { calcMaxWidthBySize } from '@unocss/preset-mini/variants' import type { Theme } from '@unocss/preset-mini' type Writeable = { -readonly [P in keyof T]: T[P] } @@ -272,3 +271,10 @@ export async function transformDirectives( await Promise.all(stack) } + +function calcMaxWidthBySize(size: string) { + const value = size.match(/^-?[0-9]+\.?[0-9]*/)?.[0] || '' + const unit = size.slice(value.length) + const maxWidth = (parseFloat(value) - 0.1) + return Number.isNaN(maxWidth) ? size : `${maxWidth}${unit}` +} diff --git a/packages/webpack/package.json b/packages/webpack/package.json index bcec8cfd01..a415d40ddf 100644 --- a/packages/webpack/package.json +++ b/packages/webpack/package.json @@ -45,7 +45,7 @@ "@unocss/config": "workspace:*", "@unocss/core": "workspace:*", "magic-string": "^0.26.2", - "unplugin": "^0.9.3", + "unplugin": "^0.9.4", "webpack-sources": "^3.2.3" }, "devDependencies": { diff --git a/packages/webpack/src/index.ts b/packages/webpack/src/index.ts index fe49a23e60..331c82a7c7 100644 --- a/packages/webpack/src/index.ts +++ b/packages/webpack/src/index.ts @@ -75,14 +75,13 @@ export default function WebpackPlugin( return entry + query } }, + loadInclude(id) { + const layer = getLayer(id) + return !!layer + }, // serve the placeholders in virtual module load(id) { - let layer = resolveLayer(getPath(id)) - if (!layer) { - const entry = resolveId(id) - if (entry) - layer = resolveLayer(entry) - } + const layer = getLayer(id) const hash = hashes.get(id) if (layer) return (hash ? getHashPlaceholder(hash) : '') + getLayerPlaceholder(layer) @@ -160,3 +159,13 @@ export default function WebpackPlugin( return plugin }).webpack() } +function getLayer(id: string) { + let layer = resolveLayer(getPath(id)) + if (!layer) { + const entry = resolveId(id) + if (entry) + layer = resolveLayer(entry) + } + return layer +} + diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1ccd800526..d86abe2771 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -591,7 +591,7 @@ importers: '@unocss/config': workspace:* '@unocss/core': workspace:* magic-string: ^0.26.2 - unplugin: ^0.9.3 + unplugin: ^0.9.4 webpack: ^5.74.0 webpack-sources: ^3.2.3 dependencies: @@ -600,7 +600,7 @@ importers: '@unocss/config': link:../config '@unocss/core': link:../core magic-string: 0.26.2 - unplugin: 0.9.3_webpack@5.74.0 + unplugin: 0.9.4_webpack@5.74.0 webpack-sources: 3.2.3 devDependencies: '@types/webpack': 5.28.0 @@ -9745,8 +9745,8 @@ packages: webpack-virtual-modules: 0.4.4 dev: true - /unplugin/0.9.3_webpack@5.74.0: - resolution: {integrity: sha512-GWXxizZG+tobNs8fuGTCeilerkkfZTZax2iivuE4pxLaF9wTnPJHOq8tbLKDb5ohVb+2BXNjrU9xx59yWTUnuw==} + /unplugin/0.9.4_webpack@5.74.0: + resolution: {integrity: sha512-lUe769wSsZiltVA1Ns9ZRx3K1ri/4yzOrLLI/ebSAj2f0PsXqIJeHIXhkhiayEe1pv+mHuZYyBS3B2RXG2Q2EQ==} peerDependencies: esbuild: '>=0.13' rollup: ^2.50.0