Skip to content

Commit 0edac6f

Browse files
authored
Merge pull request #129 from dev-five-git/add-include-option
Add include option
2 parents 695f893 + 49f3508 commit 0edac6f

File tree

8 files changed

+59
-50
lines changed

8 files changed

+59
-50
lines changed

.changeset/smooth-dots-carry.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
"@devup-ui/webpack-plugin": patch
3+
"@devup-ui/next-plugin": patch
4+
"@devup-ui/vite-plugin": patch
5+
---
6+
7+
Add include option

packages/next-plugin/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
"typescript": "^5.7.3"
3434
},
3535
"peerDependencies": {
36+
"@devup-ui/webpack-plugin": "*",
3637
"next": "*"
3738
}
3839
}

packages/vite-plugin/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
"typescript": "^5.7.3"
3131
},
3232
"peerDependencies": {
33-
"vite": "*"
33+
"vite": "*",
34+
"@devup-ui/wasm": "*"
3435
}
3536
}

packages/webpack-plugin/package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@
3434
"dependencies": {
3535
"@devup-ui/wasm": "workspace:*"
3636
},
37+
"peerDependencies": {
38+
"@devup-ui/wasm": "*"
39+
},
3740
"devDependencies": {
3841
"vite": "^6.1.0",
3942
"@types/webpack": "^5.28.5",

packages/webpack-plugin/src/__tests__/loader.test.ts

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -13,46 +13,6 @@ beforeEach(() => {
1313
})
1414

1515
describe('devupUILoader', () => {
16-
it('should ignore lib files', () => {
17-
const t = {
18-
getOptions: () => ({
19-
package: 'package',
20-
cssFile: 'cssFile',
21-
watch: false,
22-
}),
23-
addDependency: vi.fn(),
24-
async: vi.fn().mockReturnValue(vi.fn()),
25-
resourcePath: 'node_modules/package/index.ts',
26-
}
27-
devupUILoader.bind(t as any)(
28-
Buffer.from('code'),
29-
'node_modules/package/index.ts',
30-
)
31-
32-
expect(t.async).toHaveBeenCalled()
33-
expect(t.async()).toHaveBeenCalledWith(null, Buffer.from('code'))
34-
})
35-
36-
it('should ignore wrong files', () => {
37-
const t = {
38-
getOptions: () => ({
39-
package: 'package',
40-
cssFile: 'cssFile',
41-
watch: false,
42-
}),
43-
async: vi.fn().mockReturnValue(vi.fn()),
44-
resourcePath: 'node_modules/package/index.css',
45-
addDependency: vi.fn(),
46-
}
47-
devupUILoader.bind(t as any)(
48-
Buffer.from('code'),
49-
'node_modules/package/index.css',
50-
)
51-
52-
expect(t.async).toHaveBeenCalled()
53-
expect(t.async()).toHaveBeenCalledWith(null, Buffer.from('code'))
54-
})
55-
5616
it('should extract code with css', async () => {
5717
const _compiler = {
5818
__DEVUP_CACHE: '',

packages/webpack-plugin/src/__tests__/plugin.test.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ describe('devupUIPlugin', () => {
2828
it('should apply default options', () => {
2929
import.meta.resolve = vi.fn().mockReturnValue('resolved')
3030
expect(new DevupUIWebpackPlugin({}).options).toEqual({
31+
include: [],
3132
package: '@devup-ui/react',
3233
cssFile: resolve('.df', 'devup-ui.css'),
3334
devupPath: 'devup.json',
@@ -48,6 +49,7 @@ describe('devupUIPlugin', () => {
4849
watch: false,
4950
}).options,
5051
).toEqual({
52+
include: [],
5153
package: 'new-package',
5254
cssFile: 'new-css-file',
5355
devupPath: 'new-devup-path',
@@ -265,4 +267,40 @@ describe('devupUIPlugin', () => {
265267
)
266268
})
267269
})
270+
271+
it('should include lib', () => {
272+
vi.mocked(readFileSync).mockReturnValue('{"theme": "theme"}')
273+
vi.mocked(getThemeInterface).mockReturnValue('interfaceCode')
274+
vi.mocked(getCss).mockReturnValue('css')
275+
vi.mocked(writeFileSync).mockReturnValue()
276+
vi.mocked(mkdirSync)
277+
278+
const plugin = new DevupUIWebpackPlugin({
279+
include: ['lib'],
280+
})
281+
const compiler = {
282+
options: {
283+
module: {
284+
rules: [],
285+
},
286+
},
287+
hooks: {
288+
afterCompile: {
289+
tap: vi.fn(),
290+
},
291+
watchRun: {
292+
tapAsync: vi.fn(),
293+
},
294+
},
295+
} as any
296+
plugin.apply(compiler)
297+
298+
expect(writeFileSync).toHaveBeenCalledWith(
299+
resolve('.df', 'devup-ui.css'),
300+
'',
301+
{
302+
encoding: 'utf-8',
303+
},
304+
)
305+
})
268306
})

packages/webpack-plugin/src/loader.ts

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,6 @@ const devupUILoader: RawLoaderDefinitionFunction<DevupUILoaderOptions> =
2323
} = this.getOptions()
2424
const callback = this.async()
2525
const id = this.resourcePath
26-
if (
27-
id.includes('node_modules/') ||
28-
id.includes('@devup-ui/react') ||
29-
!/\.[tj](s|sx)?$/.test(id)
30-
) {
31-
callback(null, source)
32-
return
33-
}
3426

3527
try {
3628
const { code, css } = codeExtract(

packages/webpack-plugin/src/plugin.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export interface DevupUIWebpackPluginOptions {
2424
interfacePath: string
2525
watch: boolean
2626
debug: boolean
27+
include: string[]
2728
}
2829

2930
export class DevupUIWebpackPlugin {
@@ -36,6 +37,7 @@ export class DevupUIWebpackPlugin {
3637
cssFile = resolve(interfacePath, 'devup-ui.css'),
3738
watch = false,
3839
debug = false,
40+
include = [],
3941
}: Partial<DevupUIWebpackPluginOptions> = {}) {
4042
this.options = {
4143
package: libPackage,
@@ -44,6 +46,7 @@ export class DevupUIWebpackPlugin {
4446
interfacePath,
4547
watch,
4648
debug,
49+
include,
4750
}
4851
}
4952

@@ -132,7 +135,11 @@ export class DevupUIWebpackPlugin {
132135
compiler.options.module.rules.push(
133136
{
134137
test: /\.(tsx|ts|js|mjs|jsx)$/,
135-
exclude: /node_modules/,
138+
exclude: new RegExp(
139+
this.options.include.length
140+
? `node_modules(?!(.*${this.options.include.join('|').replaceAll('/', '[\\/\\\\]')})([\\/\\\\]|$))`
141+
: 'node_modules',
142+
),
136143
enforce: 'pre',
137144
use: [
138145
{

0 commit comments

Comments
 (0)