@@ -59,111 +59,12 @@ async function writer(buildDir, file, site) {
59
59
data = file . content ;
60
60
}
61
61
62
- data = await writeReact ( writePath , file , data ) ;
63
-
64
62
data = await writeScript ( writePath , file , data ) ;
65
63
66
64
await writeFile ( writePath , data ) ;
67
65
}
68
66
69
- var REACT_COMPONENT_RX = / < r e a c t - c o m p o n e n t ( .+ ?) (?: \/ > | > < \/ r e a c t - c o m p o n e n t > ) / g;
70
-
71
- var ATTR_RX = / d a t a - ( [ ^ = ] + ) = ( " (?: (?: \\ .) | [ ^ " ] ) * " ) / g;
72
-
73
- function writeReact ( writePath , file , fileData ) {
74
- return new Promise ( ( resolve , reject ) => {
75
- var script ;
76
- var id = 0 ;
77
- var withInitialRenders = fileData . replace ( REACT_COMPONENT_RX , function ( _ , componentData ) {
78
- var { module, props } = getReactData ( componentData ) ;
79
- var componentPath = require . resolve ( path . resolve ( path . dirname ( file . absPath ) , module ) ) ;
80
- var component = require ( componentPath ) ;
81
- var initialRender = ReactDOM . renderToString ( React . createElement ( component , props ) ) ;
82
- var guid = `r${ ++ id } ` ;
83
- if ( ! script ) {
84
- script = `var React = require('react');\n` ;
85
- }
86
- script += `React.render(React.createElement(require("${ componentPath } "), ${ JSON . stringify ( props ) } ), document.getElementById("${ guid } "));\n` ;
87
- return `<div id="${ guid } ">${ initialRender } </div>` ;
88
- } ) ;
89
-
90
- if ( ! script ) {
91
- return resolve ( fileData ) ;
92
- }
93
-
94
- var tmpFile = '/tmp/' + file . relPath . replace ( '/' , '__' ) ;
95
-
96
- fs . writeFile ( tmpFile , script , err => {
97
- if ( err ) {
98
- return reject ( err ) ;
99
- }
100
-
101
- var pack = webpack ( {
102
- bail : true ,
103
- entry : tmpFile ,
104
- output : {
105
- path : path . dirname ( writePath ) ,
106
- filename : path . basename ( writePath ) + '.[hash].js'
107
- } ,
108
- externals : {
109
- 'react' : 'var React'
110
- } ,
111
- resolveLoader : {
112
- root : path . join ( __dirname , '../node_modules' )
113
- } ,
114
- module : {
115
- loaders : [
116
- {
117
- test : / \. j s x ? $ / ,
118
- exclude : / ( n o d e _ m o d u l e s | b o w e r _ c o m p o n e n t s ) / ,
119
- loader : 'babel-loader' ,
120
- query : {
121
- optional : [ 'runtime' ] ,
122
- }
123
- }
124
- ]
125
- }
126
- } ) ;
127
-
128
- pack . run ( function ( err , stats ) {
129
- if ( err ) {
130
- return reject ( err ) ;
131
- }
132
-
133
- resolve (
134
- withInitialRenders . replace (
135
- '</body></html>' ,
136
- `<script src="/vendor/react-15.0.1.min.js"></script>` +
137
- `<script src="/vendor/react-dom-15.0.1.min.js"></script>` +
138
- `<script src="${ path . basename ( writePath ) } .${ stats . hash } .js"></script></body></html>`
139
- )
140
- ) ;
141
- } ) ;
142
-
143
- } ) ;
144
- } ) ;
145
- }
146
-
147
- function getReactData ( componentData ) {
148
- var module ;
149
- var props = { } ;
150
- var data = componentData . split ( ATTR_RX ) ;
151
- for ( var i = 1 ; i < data . length ; i += 3 ) {
152
- var name = data [ i ] ;
153
- var value = JSON . parse ( data [ i + 1 ] ) ;
154
- if ( name === 'module' ) {
155
- module = value ;
156
- } else {
157
- props [ name ] =
158
- value === 'true' ? true :
159
- value === 'false' ? false :
160
- ! value || isNaN ( value ) ? value : parseInt ( value , 10 ) ;
161
- }
162
- }
163
- return { module, props } ;
164
- }
165
-
166
- var SCRIPT_RX = / < s c r i p t d a t a - i n l i n e > ( [ ^ ] + ?) < \/ s c r i p t > / gm;
67
+ var SCRIPT_RX = / < s c r i p t d a t a - i n l i n e (?: = " t r u e " ) ? > ( [ ^ ] + ?) < \/ s c r i p t > / gm;
167
68
168
69
function writeScript ( writePath , file , fileData ) {
169
70
return new Promise ( ( resolve , reject ) => {
@@ -269,7 +170,6 @@ function writeScript(writePath, file, fileData) {
269
170
270
171
} ) ;
271
172
272
-
273
173
} ) ;
274
174
}
275
175
0 commit comments