1
1
import { Options , renderSync } from 'https://esm.sh/[email protected] '
2
2
3
- const defaultOptions = {
3
+ const defaultPlugin = {
4
4
name : 'sass-loader' ,
5
5
test : / .( s a s s | s c s s ) $ / ,
6
6
acceptHMR : true ,
7
7
transform ( content : Uint8Array , path : string ) {
8
- if ( path . endsWith ( '.sass' ) ) {
9
- const ret = renderSync ( {
10
- file : path ,
11
- data : ( new TextDecoder ) . decode ( content ) ,
12
- sourceMap : true ,
13
- indentedSyntax : true
14
- } )
15
- return {
16
- code : ( new TextDecoder ) . decode ( ret . css ) ,
17
- map : ret . map ? ( new TextDecoder ) . decode ( ret . map ) : undefined ,
18
- loader : 'css'
19
- }
20
- } else {
21
- const ret = renderSync ( {
22
- file : path ,
23
- data : ( new TextDecoder ) . decode ( content ) ,
24
- sourceMap : true
25
- } )
26
- return {
27
- code : ( new TextDecoder ) . decode ( ret . css ) ,
28
- map : ret . map ? ( new TextDecoder ) . decode ( ret . map ) : undefined ,
29
- loader : 'css'
30
- }
8
+ const ret = renderSync ( {
9
+ file : path ,
10
+ data : ( new TextDecoder ) . decode ( content ) ,
11
+ sourceMap : true ,
12
+ indentedSyntax : path . endsWith ( '.sass' )
13
+ } )
14
+ return {
15
+ code : ( new TextDecoder ) . decode ( ret . css ) ,
16
+ map : ret . map ? ( new TextDecoder ) . decode ( ret . map ) : undefined ,
17
+ loader : 'css'
31
18
}
32
19
}
33
20
}
34
21
35
22
let plugin : any = ( opts : Options ) => ( {
36
- name : 'sass-loader' ,
37
- test : / .( s a s s | s c s s ) $ / ,
38
- acceptHMR : true ,
23
+ ...defaultPlugin ,
39
24
transform ( content : Uint8Array , path : string ) {
40
- if ( path . endsWith ( '.sass' ) ) {
41
- const ret = renderSync ( {
42
- ...opts ,
43
- file : path ,
44
- data : ( new TextDecoder ) . decode ( content ) ,
45
- sourceMap : true ,
46
- indentedSyntax : true
47
- } )
48
- return {
49
- code : ( new TextDecoder ) . decode ( ret . css ) ,
50
- map : ret . map ? ( new TextDecoder ) . decode ( ret . map ) : undefined ,
51
- loader : 'css'
52
- }
53
- } else {
54
- const ret = renderSync ( {
55
- ...opts ,
56
- file : path ,
57
- data : ( new TextDecoder ) . decode ( content ) ,
58
- sourceMap : true
59
- } )
60
- return {
61
- code : ( new TextDecoder ) . decode ( ret . css ) ,
62
- map : ret . map ? ( new TextDecoder ) . decode ( ret . map ) : undefined ,
63
- loader : 'css'
64
- }
25
+ const ret = renderSync ( {
26
+ indentedSyntax : path . endsWith ( '.sass' ) ,
27
+ ...opts ,
28
+ file : path ,
29
+ data : ( new TextDecoder ) . decode ( content ) ,
30
+ sourceMap : true
31
+ } )
32
+ return {
33
+ code : ( new TextDecoder ) . decode ( ret . css ) ,
34
+ map : ret . map ? ( new TextDecoder ) . decode ( ret . map ) : undefined ,
35
+ loader : 'css'
65
36
}
66
37
}
67
38
} )
68
39
69
- plugin = { ...plugin , ...defaultOptions }
40
+ plugin = { ...plugin , ...defaultPlugin }
70
41
71
- export default plugin ;
42
+ export default plugin ;
0 commit comments