3
3
4
4
const requireOrNull = require ( './require-or-null' ) ;
5
5
const Plugin = require ( 'broccoli-caching-writer' ) ;
6
+ const fs = require ( 'fs' ) ;
6
7
const fse = require ( 'fs-extra' ) ;
7
8
const path = require ( 'path' ) ;
8
9
const Funnel = require ( 'broccoli-funnel' ) ;
@@ -24,26 +25,32 @@ class SASSPlugin extends Plugin {
24
25
}
25
26
26
27
build ( ) {
27
- this . listEntries ( ) . forEach ( e => {
28
- let fileName = path . resolve ( e . basePath , e . relativePath ) ;
28
+ this . listFiles ( ) . forEach ( fileName => {
29
29
this . compile ( fileName , this . inputPaths [ 0 ] , this . outputPath ) ;
30
30
} ) ;
31
31
}
32
32
33
33
compile ( fileName , inputPath , outputPath ) {
34
- let sassOptions = {
35
- file : path . normalize ( fileName ) ,
36
- includePaths : this . inputPaths
37
- } ;
34
+ const outSourceName = fileName . replace ( inputPath , outputPath ) ;
35
+ const outFileName = outSourceName . replace ( / \. s [ a c ] s s $ / , '.css' ) ;
38
36
39
- let result = sass . renderSync ( sassOptions ) ;
40
- let filePath = fileName . replace ( inputPath , outputPath ) . replace ( / \. s [ a c ] s s $ / , '.css' ) ;
37
+ const sassOptions = {
38
+ file : fileName ,
39
+ outFile : outFileName ,
40
+ includePaths : [ inputPath ] . concat ( this . options . additionalPaths || [ ] )
41
+ } ;
41
42
42
- fse . outputFileSync ( filePath , result . css , 'utf8' ) ;
43
+ const result = sass . renderSync ( sassOptions ) ;
44
+ fse . outputFileSync ( outFileName , result . css , 'utf-8' ) ;
45
+ if ( this . options . copySources ) {
46
+ fs . symlinkSync ( fileName , outSourceName ) ;
47
+ }
43
48
}
44
49
}
45
50
46
- exports . makeBroccoliTree = ( sourceDir ) => {
51
+ exports . makeBroccoliTree = ( sourceDir , options ) => {
52
+ options = options || { } ;
53
+
47
54
// include sass support only if compass-importer is not installed
48
55
let compass = requireOrNull ( 'compass-importer' ) ;
49
56
if ( ! compass ) {
@@ -56,6 +63,6 @@ exports.makeBroccoliTree = (sourceDir) => {
56
63
allowEmpty : true
57
64
} ) ;
58
65
59
- return new SASSPlugin ( [ sassSrcTree ] ) ;
66
+ return new SASSPlugin ( [ sassSrcTree ] , options ) ;
60
67
}
61
68
} ;
0 commit comments