@@ -17,15 +17,15 @@ var gulp = require('gulp'),
17
17
// picking up dependencies of the primary entry points and putting any
18
18
// limitations on directory structure for entry points.
19
19
var sources = {
20
- builds : [ 'js/detail.js' ] ,
21
- core : [
22
- 'js/readthedocs-doc-embed.js' ,
23
- 'js/autocomplete.js' ,
24
- 'js/projectimport.js' ,
25
- ] ,
26
- projects : [ 'js/tools.js' ] ,
27
- gold : [ 'js/gold.js' ] ,
28
- donate : [ 'js/donate.js' ]
20
+ builds : { 'js/detail.js' : { } } ,
21
+ core : {
22
+ 'js/readthedocs-doc-embed.js' : { create_module : false } ,
23
+ 'js/autocomplete.js' : { } ,
24
+ 'js/projectimport.js' : { } ,
25
+ } ,
26
+ projects : { 'js/tools.js' : { } } ,
27
+ gold : { 'js/gold.js' : { } } ,
28
+ donate : { 'js/donate.js' : { } }
29
29
} ;
30
30
31
31
// Standalone application to create vendor bundles for. These can be imported
@@ -36,56 +36,68 @@ var standalone = ['jquery', 'knockout', 'jquery-migrate', 'jquery-ui'];
36
36
// application. This is called by build and dev tasks.
37
37
function build_app_sources ( application , minify ) {
38
38
// Normalize file glob lists
39
- var app_sources = sources [ application ] . map ( function ( n ) {
40
- return path . join ( pkg_config . name , application , 'static-src' , '**' , n )
39
+ var bundles = Object . keys ( sources [ application ] ) . map ( function ( n ) {
40
+ var bundle_path = path . join (
41
+ pkg_config . name , application , 'static-src' , '**' , n ) ,
42
+ bundle_config = sources [ application ] [ n ] || { } ,
43
+ bundle ;
44
+
45
+ if ( / \. j s $ / . test ( bundle_path ) ) {
46
+ // Javascript sources
47
+ bundle = gulp
48
+ . src ( bundle_path )
49
+ . pipe ( es . map ( function ( file , cb ) {
50
+ return browserify_stream ( file , bundle_config , cb ) ;
51
+ } ) ) ;
52
+
53
+ if ( minify ) {
54
+ bundle = bundle
55
+ . pipe ( vinyl_buffer ( ) )
56
+ . pipe ( uglify ( ) )
57
+ . on ( 'error' , function ( ev ) {
58
+ gulp_util . beep ( ) ;
59
+ gulp_util . log ( 'Uglify error:' , ev . message ) ;
60
+ } ) ;
61
+ }
62
+ }
63
+ else if ( / \. l e s s $ / . test ( bundle_path ) ) {
64
+ // CSS sources
65
+ bundle = gulp . src ( bundle_path )
66
+ . pipe ( less ( { } ) )
67
+ . on ( 'error' , function ( ev ) {
68
+ gulp_util . beep ( ) ;
69
+ gulp_util . log ( 'LESS error:' , ev . message ) ;
70
+ } ) ;
71
+ }
72
+
73
+ return bundle ;
41
74
} ) ;
42
- var app_js_sources = app_sources . filter ( function ( elem , n , arr ) {
43
- return / \. j s $ / . test ( elem ) ;
44
- } ) ;
45
- var app_css_sources = app_sources . filter ( function ( elem , n , arr ) {
46
- return / \. l e s s $ / . test ( elem ) ;
47
- } ) ;
48
-
49
- // Javascript sources
50
- var app_js = gulp
51
- . src ( app_js_sources )
52
- . pipe ( es . map ( browserify_stream ) ) ;
53
75
54
- if ( minify ) {
55
- app_js = app_js
56
- . pipe ( vinyl_buffer ( ) )
57
- . pipe ( uglify ( ) )
58
- . on ( 'error' , function ( ev ) {
59
- gulp_util . beep ( ) ;
60
- gulp_util . log ( 'Uglify error:' , ev . message ) ;
61
- } ) ;
62
- }
63
-
64
- // CSS sources
65
- var app_css = gulp . src ( app_css_sources )
66
- . pipe ( less ( { } ) )
67
- . on ( 'error' , function ( ev ) {
68
- gulp_util . beep ( ) ;
69
- gulp_util . log ( 'LESS error:' , ev . message ) ;
70
- } ) ;
71
-
72
- return es . merge ( app_js , app_css )
76
+ return es . merge ( bundles )
73
77
. pipe ( gulp . dest ( path . join ( pkg_config . name , application , 'static' ) ) ) ;
74
78
}
75
79
76
80
// Browserify build
77
- function browserify_stream ( file , cb_output ) {
81
+ function browserify_stream ( file , config , cb_output ) {
78
82
bower_resolve . offline = true ;
79
83
bower_resolve . init ( function ( ) {
80
- var bundle_stream = browserify ( ) ,
81
- module_name = path . basename ( file . path , '.js' ) ;
84
+ var bundle_stream = browserify ( ) ;
82
85
83
86
standalone . map ( function ( module ) {
84
87
bundle_stream = bundle_stream . external ( module ) ;
85
88
} ) ;
86
89
90
+ if ( config . create_module === false ) {
91
+ bundle_stream . add ( file . path )
92
+ }
93
+ else {
94
+ var module_name = config . expose || path . basename ( file . path , '.js' ) ;
95
+ bundle_stream = bundle_stream . require (
96
+ file . path ,
97
+ { expose : module_name } )
98
+ }
99
+
87
100
bundle_stream
88
- . require ( file . path , { expose : module_name } )
89
101
. transform ( 'debowerify' , { ignoreModules : standalone } )
90
102
. bundle ( )
91
103
. on ( 'error' , function ( ev ) {
0 commit comments