From bf990fcb61bd8a7f4458b2dd2f1cc20c9f6756d8 Mon Sep 17 00:00:00 2001
From: cyly <786156072@qq.com>
Date: Wed, 17 Aug 2022 14:02:28 +0800
Subject: [PATCH 1/2] fix(webpack): webpack4 optimize filter *
---
examples/webpack4/.npmrc | 1 +
examples/webpack4/babel.config.js | 5 +++++
examples/webpack4/package.json | 17 +++++++++++++++++
examples/webpack4/pnpm-workspace.yaml | 0
examples/webpack4/public/index.html | 15 +++++++++++++++
examples/webpack4/src/About.vue | 5 +++++
examples/webpack4/src/App.vue | 19 +++++++++++++++++++
examples/webpack4/src/Home.vue | 14 ++++++++++++++
examples/webpack4/src/main.js | 8 ++++++++
examples/webpack4/unocss.config.js | 9 +++++++++
examples/webpack4/vue.config.js | 16 ++++++++++++++++
packages/webpack/src/index.ts | 1 +
12 files changed, 110 insertions(+)
create mode 100644 examples/webpack4/.npmrc
create mode 100644 examples/webpack4/babel.config.js
create mode 100644 examples/webpack4/package.json
create mode 100644 examples/webpack4/pnpm-workspace.yaml
create mode 100644 examples/webpack4/public/index.html
create mode 100644 examples/webpack4/src/About.vue
create mode 100644 examples/webpack4/src/App.vue
create mode 100644 examples/webpack4/src/Home.vue
create mode 100644 examples/webpack4/src/main.js
create mode 100644 examples/webpack4/unocss.config.js
create mode 100644 examples/webpack4/vue.config.js
diff --git a/examples/webpack4/.npmrc b/examples/webpack4/.npmrc
new file mode 100644
index 0000000000..bf2e7648b0
--- /dev/null
+++ b/examples/webpack4/.npmrc
@@ -0,0 +1 @@
+shamefully-hoist=true
diff --git a/examples/webpack4/babel.config.js b/examples/webpack4/babel.config.js
new file mode 100644
index 0000000000..e9558405fd
--- /dev/null
+++ b/examples/webpack4/babel.config.js
@@ -0,0 +1,5 @@
+module.exports = {
+ presets: [
+ '@vue/cli-plugin-babel/preset'
+ ]
+}
diff --git a/examples/webpack4/package.json b/examples/webpack4/package.json
new file mode 100644
index 0000000000..c17c7312c3
--- /dev/null
+++ b/examples/webpack4/package.json
@@ -0,0 +1,17 @@
+{
+ "private": true,
+ "scripts": {
+ "dev": "vue-cli-service serve",
+ "build": "vue-cli-service build"
+ },
+ "dependencies": {
+ "vue": "^2.6.11"
+ },
+ "devDependencies": {
+ "@unocss/webpack": "link:../../packages/webpack",
+ "@vue/cli-plugin-babel": "~4.5.15",
+ "@vue/cli-service": "~4.5.15",
+ "unocss": "^0.45.6",
+ "vue-template-compiler": "^2.6.11"
+ }
+}
diff --git a/examples/webpack4/pnpm-workspace.yaml b/examples/webpack4/pnpm-workspace.yaml
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/examples/webpack4/public/index.html b/examples/webpack4/public/index.html
new file mode 100644
index 0000000000..941b2f8813
--- /dev/null
+++ b/examples/webpack4/public/index.html
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+ webpack4 demo
+
+
+
+
+
+
diff --git a/examples/webpack4/src/About.vue b/examples/webpack4/src/About.vue
new file mode 100644
index 0000000000..48e33fa407
--- /dev/null
+++ b/examples/webpack4/src/About.vue
@@ -0,0 +1,5 @@
+
+
+
About
+
+
diff --git a/examples/webpack4/src/App.vue b/examples/webpack4/src/App.vue
new file mode 100644
index 0000000000..cec847b540
--- /dev/null
+++ b/examples/webpack4/src/App.vue
@@ -0,0 +1,19 @@
+
+
+
+
+
diff --git a/examples/webpack4/src/Home.vue b/examples/webpack4/src/Home.vue
new file mode 100644
index 0000000000..989cb74707
--- /dev/null
+++ b/examples/webpack4/src/Home.vue
@@ -0,0 +1,14 @@
+
+
+
+
+
diff --git a/examples/webpack4/src/main.js b/examples/webpack4/src/main.js
new file mode 100644
index 0000000000..211822f331
--- /dev/null
+++ b/examples/webpack4/src/main.js
@@ -0,0 +1,8 @@
+import Vue from 'vue'
+import App from './App.vue'
+
+import 'uno.css'
+
+new Vue({
+ render: h => h(App)
+}).$mount('#app')
diff --git a/examples/webpack4/unocss.config.js b/examples/webpack4/unocss.config.js
new file mode 100644
index 0000000000..aacc6bad2e
--- /dev/null
+++ b/examples/webpack4/unocss.config.js
@@ -0,0 +1,9 @@
+import presetAttributify from '@unocss/preset-attributify'
+import presetUno from '@unocss/preset-uno'
+
+module.exports = {
+ presets: [
+ presetAttributify(),
+ presetUno(),
+ ]
+}
diff --git a/examples/webpack4/vue.config.js b/examples/webpack4/vue.config.js
new file mode 100644
index 0000000000..13cd6d806e
--- /dev/null
+++ b/examples/webpack4/vue.config.js
@@ -0,0 +1,16 @@
+const UnoCSS = require('@unocss/webpack').default
+
+module.exports = {
+ configureWebpack: {
+ plugins: [
+ UnoCSS({}),
+ ],
+ },
+ chainWebpack(config) {
+ config.module.rule('vue').uses.delete('cache-loader')
+ config.module.rule('tsx').uses.delete('cache-loader')
+ config.merge({
+ cache: false,
+ })
+ },
+}
\ No newline at end of file
diff --git a/packages/webpack/src/index.ts b/packages/webpack/src/index.ts
index 7df103056b..59f6fbe1d2 100644
--- a/packages/webpack/src/index.ts
+++ b/packages/webpack/src/index.ts
@@ -97,6 +97,7 @@ export default function WebpackPlugin(
const result = await uno.generate(tokens, { minify: true })
for (const file of files) {
+ if (file === '*') return;
let code = compilation.assets[file].source().toString()
let replaced = false
code = code.replace(HASH_PLACEHOLDER_RE, '')
From 8ae5955a66e4c82359fa86cb0cca8162e7f7096f Mon Sep 17 00:00:00 2001
From: Anthony Fu
Date: Thu, 18 Aug 2022 14:53:12 +0800
Subject: [PATCH 2/2] chore: lint
---
examples/webpack4/babel.config.js | 4 ++--
examples/webpack4/src/App.vue | 18 ++++++++++--------
examples/webpack4/src/Home.vue | 16 +++++++++-------
examples/webpack4/src/main.js | 2 +-
examples/webpack4/unocss.config.js | 7 ++++---
examples/webpack4/vue.config.js | 2 +-
packages/webpack/src/index.ts | 5 ++++-
7 files changed, 31 insertions(+), 23 deletions(-)
diff --git a/examples/webpack4/babel.config.js b/examples/webpack4/babel.config.js
index e9558405fd..df195386eb 100644
--- a/examples/webpack4/babel.config.js
+++ b/examples/webpack4/babel.config.js
@@ -1,5 +1,5 @@
module.exports = {
presets: [
- '@vue/cli-plugin-babel/preset'
- ]
+ '@vue/cli-plugin-babel/preset',
+ ],
}
diff --git a/examples/webpack4/src/App.vue b/examples/webpack4/src/App.vue
index cec847b540..c59dbaf108 100644
--- a/examples/webpack4/src/App.vue
+++ b/examples/webpack4/src/App.vue
@@ -1,19 +1,21 @@
-
-
-
+
+
+
+
+
diff --git a/examples/webpack4/src/Home.vue b/examples/webpack4/src/Home.vue
index 989cb74707..3beee0f33c 100644
--- a/examples/webpack4/src/Home.vue
+++ b/examples/webpack4/src/Home.vue
@@ -1,14 +1,16 @@
-
-
-
-
+
+
+
+
diff --git a/examples/webpack4/src/main.js b/examples/webpack4/src/main.js
index 211822f331..3796af7632 100644
--- a/examples/webpack4/src/main.js
+++ b/examples/webpack4/src/main.js
@@ -4,5 +4,5 @@ import App from './App.vue'
import 'uno.css'
new Vue({
- render: h => h(App)
+ render: h => h(App),
}).$mount('#app')
diff --git a/examples/webpack4/unocss.config.js b/examples/webpack4/unocss.config.js
index aacc6bad2e..4fc187f6dd 100644
--- a/examples/webpack4/unocss.config.js
+++ b/examples/webpack4/unocss.config.js
@@ -1,9 +1,10 @@
import presetAttributify from '@unocss/preset-attributify'
import presetUno from '@unocss/preset-uno'
+import { defineConfig } from '@unocss/config'
-module.exports = {
+export default defineConfig({
presets: [
presetAttributify(),
presetUno(),
- ]
-}
+ ],
+})
diff --git a/examples/webpack4/vue.config.js b/examples/webpack4/vue.config.js
index 13cd6d806e..ddf906973f 100644
--- a/examples/webpack4/vue.config.js
+++ b/examples/webpack4/vue.config.js
@@ -13,4 +13,4 @@ module.exports = {
cache: false,
})
},
-}
\ No newline at end of file
+}
diff --git a/packages/webpack/src/index.ts b/packages/webpack/src/index.ts
index 59f6fbe1d2..fe49a23e60 100644
--- a/packages/webpack/src/index.ts
+++ b/packages/webpack/src/index.ts
@@ -97,7 +97,10 @@ export default function WebpackPlugin(
const result = await uno.generate(tokens, { minify: true })
for (const file of files) {
- if (file === '*') return;
+ // https://github.com/unocss/unocss/pull/1428
+ if (file === '*')
+ return
+
let code = compilation.assets[file].source().toString()
let replaced = false
code = code.replace(HASH_PLACEHOLDER_RE, '')