diff --git a/.changeset/curly-readers-check.md b/.changeset/curly-readers-check.md new file mode 100644 index 00000000..a717b6fc --- /dev/null +++ b/.changeset/curly-readers-check.md @@ -0,0 +1,5 @@ +--- +"@devup-ui/webpack-plugin": patch +--- + +Upgrade webpack hmr diff --git a/packages/webpack-plugin/src/__tests__/css-loader.test.ts b/packages/webpack-plugin/src/__tests__/css-loader.test.ts index f6f9709e..8b6c3fc4 100644 --- a/packages/webpack-plugin/src/__tests__/css-loader.test.ts +++ b/packages/webpack-plugin/src/__tests__/css-loader.test.ts @@ -1,16 +1,19 @@ -import { getCss } from '@devup-ui/wasm' +import { resolve } from 'node:path' import devupUICssLoader from '../css-loader' -vi.mock('@devup-ui/wasm') +vi.mock('node:path') describe('devupUICssLoader', () => { it('should invoke callback', () => { - vi.mocked(getCss).mockReturnValue('css') const callback = vi.fn() + const addContextDependency = vi.fn() + vi.mocked(resolve).mockReturnValue('resolved') devupUICssLoader.bind({ callback, - } as any)(Buffer.from(''), '') - expect(callback).toBeCalledWith(null, 'css') + addContextDependency, + } as any)(Buffer.from('data'), '') + expect(callback).toBeCalledWith(null, Buffer.from('data')) + expect(addContextDependency).toBeCalledWith('resolved') }) }) diff --git a/packages/webpack-plugin/src/css-loader.ts b/packages/webpack-plugin/src/css-loader.ts index e9778e02..dc892194 100644 --- a/packages/webpack-plugin/src/css-loader.ts +++ b/packages/webpack-plugin/src/css-loader.ts @@ -1,7 +1,9 @@ -import { getCss } from '@devup-ui/wasm' +import { resolve } from 'node:path' + import type { RawLoaderDefinitionFunction } from 'webpack' -const devupUICssLoader: RawLoaderDefinitionFunction = function () { - this.callback(null, getCss()) +const devupUICssLoader: RawLoaderDefinitionFunction = function (a) { + this.addContextDependency(resolve(this.rootContext, 'src')) + this.callback(null, a) } export default devupUICssLoader diff --git a/packages/webpack-plugin/src/loader.ts b/packages/webpack-plugin/src/loader.ts index 921c543e..3277832a 100644 --- a/packages/webpack-plugin/src/loader.ts +++ b/packages/webpack-plugin/src/loader.ts @@ -23,7 +23,6 @@ const devupUILoader: RawLoaderDefinitionFunction = callback(null, source) return } - this.addDependency(cssFile) try { const { code, css } = codeExtract( diff --git a/packages/webpack-plugin/src/plugin.ts b/packages/webpack-plugin/src/plugin.ts index 1acf83d0..3eb329b9 100644 --- a/packages/webpack-plugin/src/plugin.ts +++ b/packages/webpack-plugin/src/plugin.ts @@ -103,30 +103,34 @@ export class DevupUIWebpackPlugin { writeFileSync(this.options.cssFile, '', { encoding: 'utf-8' }) } - compiler.options.module.rules.push({ - test: this.options.cssFile, - use: [ - { - loader: createRequire(import.meta.url).resolve( - '@devup-ui/webpack-plugin/css-loader', - ), - }, - ], - }) + compiler.options.module.rules.push( + { + test: /\.(tsx|ts|js|mjs|jsx)$/, + exclude: /node_modules/, + enforce: 'pre', + use: [ + { + loader: createRequire(import.meta.url).resolve( + '@devup-ui/webpack-plugin/loader', + ), + options: { + plugin: this, + }, + }, + ], + }, + { + test: this.options.cssFile, + enforce: 'post', - compiler.options.module.rules.push({ - test: /\.(tsx|ts|js|mjs|jsx)$/, - exclude: /node_modules/, - use: [ - { - loader: createRequire(import.meta.url).resolve( - '@devup-ui/webpack-plugin/loader', - ), - options: { - plugin: this, + use: [ + { + loader: createRequire(import.meta.url).resolve( + '@devup-ui/webpack-plugin/css-loader', + ), }, - }, - ], - }) + ], + }, + ) } }