-
Notifications
You must be signed in to change notification settings - Fork 0
/
vite-plugin.js
39 lines (33 loc) · 1005 Bytes
/
vite-plugin.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
const { transformAsync } = require('@babel/core')
const sourceRegex = /\.(j|t)sx?$/
const tsxRegex = /\.(j|t)sx$/ // all files are being interpreted as TS, so we'll treat JSX as TSX
module.exports = function viteCssedPlugin() {
return {
name: 'cssed-plugin',
enforce: 'pre',
async transform(source, filename) {
if (filename.includes('node_modules')) {
return undefined
}
if (!sourceRegex.test(filename)) {
return undefined
}
if (!source.includes('import { css } from')) return undefined
const result = await transformAsync(source, {
filename,
plugins: [
require.resolve('@babel/plugin-syntax-jsx'),
[
require.resolve('@babel/plugin-syntax-typescript'),
{ isTSX: tsxRegex.test(filename) }
],
require.resolve('./lib/index.js')
],
babelrc: false,
configFile: false,
sourceMaps: true
})
return result
}
}
}