@@ -8,6 +8,7 @@ const fse = require('fs-extra');
8
8
const { spawnSync} = require ( 'child_process' ) ;
9
9
const path = require ( 'path' ) ;
10
10
const tmp = require ( 'tmp' ) ;
11
+ const glob = require ( 'glob' ) ;
11
12
12
13
const {
13
14
ReactVersion,
@@ -235,19 +236,28 @@ function processExperimental(buildDir, version) {
235
236
) ;
236
237
}
237
238
238
- if ( fs . existsSync ( buildDir + '/ facebook-www') ) {
239
- const hash = crypto . createHash ( 'sha1' ) ;
240
- for ( const fileName of fs . readdirSync ( buildDir + '/facebook-www' ) . sort ( ) ) {
241
- const filePath = buildDir + '/facebook-www/' + fileName ;
239
+ const facebookWwwDir = path . join ( buildDir , ' facebook-www') ;
240
+ if ( fs . existsSync ( facebookWwwDir ) ) {
241
+ for ( const fileName of fs . readdirSync ( facebookWwwDir ) . sort ( ) ) {
242
+ const filePath = path . join ( facebookWwwDir , fileName ) ;
242
243
const stats = fs . statSync ( filePath ) ;
243
244
if ( ! stats . isDirectory ( ) ) {
244
- hash . update ( fs . readFileSync ( filePath ) ) ;
245
245
fs . renameSync ( filePath , filePath . replace ( '.js' , '.modern.js' ) ) ;
246
246
}
247
247
}
248
+ const contentHash = hashJSFilesInDirectory ( facebookWwwDir ) ;
248
249
updatePlaceholderReactVersionInCompiledArtifacts (
249
- buildDir + '/facebook-www' ,
250
- ReactVersion + '-www-modern-' + hash . digest ( 'hex' ) . slice ( 0 , 8 )
250
+ facebookWwwDir ,
251
+ ReactVersion + '-www-modern-' + contentHash
252
+ ) ;
253
+ }
254
+
255
+ const facebookReactNativeDir = path . join ( buildDir , 'facebook-react-native' ) ;
256
+ if ( fs . existsSync ( facebookReactNativeDir ) ) {
257
+ const contentHash = hashJSFilesInDirectory ( facebookReactNativeDir ) ;
258
+ updatePlaceholderReactVersionInCompiledArtifacts (
259
+ facebookReactNativeDir ,
260
+ ReactVersion + '-react-native-' + contentHash
251
261
) ;
252
262
}
253
263
@@ -346,6 +356,14 @@ function updatePackageVersions(
346
356
}
347
357
}
348
358
359
+ function hashJSFilesInDirectory ( directory ) {
360
+ const hash = crypto . createHash ( 'sha1' ) ;
361
+ for ( const filePath of glob . sync ( directory + '/**/*.js' ) . sort ( ) ) {
362
+ hash . update ( fs . readFileSync ( filePath ) ) ;
363
+ }
364
+ return hash . digest ( 'hex' ) . slice ( 0 , 8 ) ;
365
+ }
366
+
349
367
function updatePlaceholderReactVersionInCompiledArtifacts (
350
368
artifactsDirectory ,
351
369
newVersion
0 commit comments