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 @@ + 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, '')