Skip to content

Commit d3b979c

Browse files
committed
refactor: fetch version of bob from npm
1 parent d2e8fd3 commit d3b979c

File tree

1 file changed

+27
-4
lines changed
  • packages/create-react-native-library/src

1 file changed

+27
-4
lines changed

packages/create-react-native-library/src/index.ts

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@ import validateNpmPackage from 'validate-npm-package-name';
99
import githubUsername from 'github-username';
1010
import prompts, { PromptObject } from './utils/prompts';
1111

12-
// eslint-disable-next-line import/no-commonjs
13-
const pack = require('../package.json');
14-
1512
const BINARIES = /(gradlew|\.(jar|keystore|png|jpg|gif))$/;
1613

1714
const COMMON_FILES = path.resolve(__dirname, '../templates/common');
@@ -270,9 +267,35 @@ async function create(argv: yargs.Arguments<any>) {
270267
const moduleType: ModuleType =
271268
type === 'native-view' || type === 'native-view-swift' ? 'view' : 'module';
272269

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+
273296
const options = {
274297
bob: {
275-
version: pack.version,
298+
version,
276299
},
277300
project: {
278301
slug,

0 commit comments

Comments
 (0)