1
1
const path = require ( 'path' )
2
- const fs = require ( 'fs' )
3
2
const cssExtract = require ( 'extract-from-css' )
4
3
const getVueJestConfig = require ( './utils' ) . getVueJestConfig
5
4
const compileStyle = require ( '@vue/component-compiler-utils' ) . compileStyle
@@ -8,18 +7,31 @@ const getCustomTransformer = require('./utils').getCustomTransformer
8
7
const logResultErrors = require ( './utils' ) . logResultErrors
9
8
const loadSrc = require ( './utils' ) . loadSrc
10
9
11
- function getGlobalResources ( resources , lang ) {
10
+ function getGlobalResources ( resources , lang , filePath ) {
12
11
let globalResources = ''
13
12
if ( resources && resources [ lang ] ) {
14
13
globalResources = resources [ lang ]
15
- . map ( resource => path . resolve ( process . cwd ( ) , resource ) )
16
- . filter ( resourcePath => fs . existsSync ( resourcePath ) )
17
- . map ( resourcePath => fs . readFileSync ( resourcePath ) . toString ( ) )
18
- . join ( '\n' )
14
+ . map ( resource => {
15
+ const relativePath = path . relative (
16
+ path . dirname ( filePath ) ,
17
+ path . resolve ( process . cwd ( ) , resource )
18
+ )
19
+ return `${ getImportLine ( lang , relativePath ) } \n`
20
+ } )
21
+ . join ( '' )
19
22
}
20
23
return globalResources
21
24
}
22
25
26
+ function getImportLine ( lang , filePath ) {
27
+ const placeholder = '__PATH__'
28
+ const formats = {
29
+ default : `@import "${ placeholder } ";` ,
30
+ sass : `@import "${ placeholder } "`
31
+ }
32
+ return ( formats [ lang ] || formats . default ) . replace ( placeholder , filePath )
33
+ }
34
+
23
35
function extractClassMap ( cssCode ) {
24
36
const cssNames = cssExtract . extractClasses ( cssCode )
25
37
const cssMap = { }
@@ -68,7 +80,7 @@ module.exports = function processStyle(stylePart, filePath, config = {}) {
68
80
}
69
81
70
82
let content =
71
- getGlobalResources ( vueJestConfig . resources , stylePart . lang ) +
83
+ getGlobalResources ( vueJestConfig . resources , stylePart . lang , filePath ) +
72
84
stylePart . content
73
85
74
86
const transformer =
0 commit comments