@@ -43,12 +43,56 @@ export default function vue(options = {}) {
43
43
}
44
44
/* eslint-enable */
45
45
46
+ options = mergeOptions ( options , DEFAULT_OPTIONS ) ;
47
+
46
48
const styles = { } ;
49
+ let rollupOptions = { } ;
50
+ const generateStyleBundle = ( ) => {
51
+ if ( options . css === false ) {
52
+ return ;
53
+ }
47
54
48
- options = mergeOptions ( options , DEFAULT_OPTIONS ) ;
55
+ // Combine all stylesheets.
56
+ let css = '' ;
57
+ Object . keys ( styles ) . forEach ( ( key ) => {
58
+ css += styles [ key ] . content || '' ;
59
+ } ) ;
60
+
61
+ // Don't generate empty style file.
62
+ if ( ! css . trim ( ) . length ) {
63
+ return ;
64
+ }
65
+ // Emit styles through callback
66
+ if ( typeof options . css === 'function' ) {
67
+ options . css ( css , styles ) ;
68
+ return ;
69
+ }
70
+
71
+ let dest = options . css ;
72
+ if ( typeof dest !== 'string' ) {
73
+ // Guess destination filename
74
+ dest = rollupOptions . dest || 'bundle.js' ;
75
+ if ( dest . endsWith ( '.js' ) ) {
76
+ dest = dest . slice ( 0 , - 3 ) ;
77
+ }
78
+ dest = `${ dest } .css` ;
79
+ }
80
+
81
+ // Emit styles to file
82
+ writeFile ( dest , css , ( err ) => {
83
+ if ( err ) {
84
+ throw err ;
85
+ }
86
+ emitted ( dest , css . length ) ;
87
+ } ) ;
88
+ } ;
49
89
50
90
return {
51
91
name : 'vue' ,
92
+ options ( o ) {
93
+ rollupOptions = o ;
94
+ return o ;
95
+ } ,
52
96
transform ( source , id ) {
53
97
if ( id . endsWith ( 'vue.common.js' ) ) {
54
98
return source . replace ( / p r o c e s s \. e n v \. N O D E _ E N V / g,
@@ -66,49 +110,10 @@ export default function vue(options = {}) {
66
110
// Component javascript with inlined html template
67
111
return js ;
68
112
} ,
69
- ongenerate ( opts , rendered ) {
70
- // Put with statements back
71
- rendered . code = rendered . code . replace (
72
- / i f [ \s ] * \( ' _ _ V U E _ W I T H _ S T A T E M E N T _ _ ' \) / g, 'with(this)' ) ;
73
-
74
- if ( options . css === false ) {
75
- return ;
76
- }
77
-
78
- // Combine all stylesheets
79
- let css = '' ;
80
- Object . keys ( styles ) . forEach ( ( key ) => {
81
- css += styles [ key ] . content || '' ;
82
- } ) ;
83
-
84
- // Emit styles through callback
85
- if ( typeof options . css === 'function' ) {
86
- options . css ( css , styles ) ;
87
- return ;
88
- }
89
-
90
- let dest = options . css ;
91
- if ( typeof dest !== 'string' ) {
92
- // Don't create unwanted empty stylesheets
93
- if ( ! css . length ) {
94
- return ;
95
- }
96
-
97
- // Guess destination filename
98
- dest = opts . dest || 'bundle.js' ;
99
- if ( dest . endsWith ( '.js' ) ) {
100
- dest = dest . slice ( 0 , - 3 ) ;
101
- }
102
- dest = `${ dest } .css` ;
103
- }
113
+ transformBundle ( source ) {
114
+ generateStyleBundle ( ) ;
104
115
105
- // Emit styles to file
106
- writeFile ( dest , css , ( err ) => {
107
- if ( err ) {
108
- throw err ;
109
- }
110
- emitted ( dest , css . length ) ;
111
- } ) ;
116
+ return source . replace ( / i f [ \s ] * \( ' _ _ V U E _ W I T H _ S T A T E M E N T _ _ ' \) / g, 'with(this)' ) ;
112
117
} ,
113
118
} ;
114
119
}
0 commit comments