1
- const clui = require ( 'clui' )
2
- , Spinner = clui . Spinner
3
- , Path = require ( 'path' )
4
- , fs = require ( 'fs' )
1
+ const Path = require ( 'path' )
2
+ , fs = require ( 'fs-extra' )
5
3
, crypto = require ( 'crypto' )
6
4
, Promise = require ( 'bluebird' )
7
5
, jspm = require ( 'jspm' )
6
+ , _ = require ( 'lodash' )
8
7
;
9
8
10
9
module . exports = function ( FASTACK ) {
11
10
12
11
FASTACK . getLocalDeps = function ( ) {
12
+ var installedDeps = fs . readJsonSync ( Path . resolve ( FASTACK . localDir , 'package.json' ) ) [ 'jspm' ] [ 'dependencies' ] ;
13
+ installedDeps = _ . keys ( installedDeps ) ;
14
+
13
15
return new Promise ( function ( resolve , reject ) {
14
16
var allowable = [
15
17
'css' ,
16
18
'coffee' ,
17
19
'sass' ,
18
- 'scss'
20
+ 'scss' ,
21
+ 'less' ,
22
+ 'js'
19
23
] ;
20
24
21
25
function getSuffix ( ext ) {
22
26
switch ( ext ) {
23
- case ".css" : return "plugin-css" ;
24
- case ".sass" : return "plugin-sass" ;
25
- case ".scss" : return "plugin-sass" ;
26
- default : return "" ;
27
+ case ".css" : return "!plugin-css" ;
28
+ case ".sass" : return "!plugin-sass" ;
29
+ case ".scss" : return "!plugin-sass" ;
30
+ case ".js" : return "" ;
31
+ default : return "!" ;
27
32
}
28
33
}
29
34
35
+ //var out = installedDeps;
30
36
var out = [ ] ;
31
37
32
38
FASTACK . traverse ( FASTACK . cwd , allowable , function ( file ) {
33
- out . push ( file . path + '!' + getSuffix ( Path . extname ( file . path ) ) ) ;
34
- } ) . then ( function ( files ) {
35
- var str = '* + fastack:dev/live-reload' ;
36
- for ( var i in files ) {
37
- var file = files [ i ] ;
38
- str += ' + ./' + Path . relative ( FASTACK . cwd , file . path ) + '!' + getSuffix ( Path . extname ( file . path ) )
39
- }
39
+ out . push ( file . path + getSuffix ( Path . extname ( file . path ) ) ) ;
40
+ } ) . then ( function ( ) {
40
41
resolve ( out ) ;
41
42
} ) ;
42
43
} ) ;
43
44
} ;
44
45
45
46
46
-
47
47
FASTACK . build = function ( production ) {
48
- production = ! ! production
48
+ production = ! ! production ;
49
49
FASTACK . hash = crypto . createHash ( 'md5' ) . update ( ( new Date ( ) ) . toString ( ) ) . digest ( 'hex' ) ;
50
50
51
51
jspm . setPackagePath ( FASTACK . localDir ) ;
@@ -54,28 +54,42 @@ module.exports = function(FASTACK) {
54
54
builder . loadConfigSync ( configFile , true , true ) ;
55
55
builder . config ( {
56
56
buildCSS : true ,
57
- separateCSS : true ,
58
- paths : {
59
- 'fastack:*' : Path . resolve ( FASTACK . localDir , 'fastack-packages/*' )
60
- }
57
+ separateCSS : true
61
58
} ) ;
62
59
60
+ if ( ! production ) {
61
+ builder . config ( {
62
+ paths : {
63
+ 'fastack:*' : Path . resolve ( FASTACK . localDir , 'fastack-packages/*' )
64
+ }
65
+ } )
66
+ }
67
+
63
68
return new Promise ( function ( resolve , reject ) {
64
- resolve ( ) ;
65
- //_buildString()
66
- //.then(function (str) {
67
- // builder.buildStatic(str, Path.join(FASTACK.localDir, 'builds/fastack.js'), {
68
- // minify: production,
69
- // sourceMaps: true,
70
- // mangle: production,
71
- // lowResSourceMaps: !production
72
- // })
73
- // .then(function (data) {
74
- // resolve();
75
- // }).catch(function (e) {
76
- // reject(e);
77
- // })
78
- //});
69
+ if ( ! production ) resolve ( ) ;
70
+ else {
71
+ var hash = FASTACK . hash ;
72
+ FASTACK . getLocalDeps ( )
73
+ . then ( ( str ) => {
74
+ str = str . map ( ( path ) => Path . relative ( FASTACK . cwd , path ) ) ;
75
+ str = str . join ( ' + ' ) ;
76
+ fs . ensureDirSync ( Path . join ( FASTACK . localDir , 'builds/' + hash + '/' ) ) ;
77
+ builder . buildStatic ( str , Path . join ( FASTACK . localDir , 'builds/' + hash + '/' + hash + '.js' ) , {
78
+ minify : false ,
79
+ sourceMaps : true ,
80
+ //mangle: production,
81
+ //lowResSourceMaps: !production
82
+ format : 'global'
83
+ } )
84
+ . then ( function ( ) {
85
+ //FASTACK.logger.info(hash);
86
+ resolve ( FASTACK . hash ) ;
87
+ } ) . catch ( function ( e ) {
88
+ console . log ( e ) ;
89
+ reject ( e ) ;
90
+ } )
91
+ } )
92
+ }
79
93
} ) ;
80
94
} ;
81
95
0 commit comments