@@ -9,9 +9,6 @@ import validateNpmPackage from 'validate-npm-package-name';
9
9
import githubUsername from 'github-username' ;
10
10
import prompts , { PromptObject } from './utils/prompts' ;
11
11
12
- // eslint-disable-next-line import/no-commonjs
13
- const pack = require ( '../package.json' ) ;
14
-
15
12
const BINARIES = / ( g r a d l e w | \. ( j a r | k e y s t o r e | p n g | j p g | g i f ) ) $ / ;
16
13
17
14
const COMMON_FILES = path . resolve ( __dirname , '../templates/common' ) ;
@@ -270,9 +267,35 @@ async function create(argv: yargs.Arguments<any>) {
270
267
const moduleType : ModuleType =
271
268
type === 'native-view' || type === 'native-view-swift' ? 'view' : 'module' ;
272
269
270
+ // Get latest version of Bob from NPM
271
+ let version : string ;
272
+
273
+ try {
274
+ version = await Promise . race ( [
275
+ new Promise < string > ( ( resolve ) =>
276
+ setTimeout ( ( ) => resolve ( version ) , 1000 )
277
+ ) ,
278
+ new Promise < string > ( ( resolve , reject ) => {
279
+ const npm = spawn ( 'npm' , [
280
+ 'view' ,
281
+ 'react-native-builder-bob' ,
282
+ 'dist-tags.latest' ,
283
+ ] ) ;
284
+
285
+ npm . stdout ?. on ( 'data' , ( data ) => resolve ( data . toString ( ) . trim ( ) ) ) ;
286
+ npm . stderr ?. on ( 'data' , ( data ) => reject ( data . toString ( ) . trim ( ) ) ) ;
287
+
288
+ npm . on ( 'error' , ( err ) => reject ( err ) ) ;
289
+ } ) ,
290
+ ] ) ;
291
+ } catch ( e ) {
292
+ // Fallback to a known version if we couldn't fetch
293
+ version = '0.18.0' ;
294
+ }
295
+
273
296
const options = {
274
297
bob : {
275
- version : pack . version ,
298
+ version,
276
299
} ,
277
300
project : {
278
301
slug,
0 commit comments