|
11 | 11 |
|
12 | 12 | const yargs = require('yargs');
|
13 | 13 | const {execSync, spawnSync} = require('child_process');
|
14 |
| -const fs = require('fs'); |
15 |
| -const path = require('path'); |
16 | 14 |
|
| 15 | +const forEachPackage = require('../monorepo/for-each-package'); |
17 | 16 | const setupVerdaccio = require('../setup-verdaccio');
|
18 | 17 |
|
19 | 18 | const {argv} = yargs
|
@@ -43,41 +42,32 @@ const {reactNativeRootPath, templateName, templateConfigPath, directory} = argv;
|
43 | 42 |
|
44 | 43 | const VERDACCIO_CONFIG_PATH = `${reactNativeRootPath}/.circleci/verdaccio.yml`;
|
45 | 44 |
|
46 |
| -function readPackageJSON(pathToPackage) { |
47 |
| - return JSON.parse(fs.readFileSync(path.join(pathToPackage, 'package.json'))); |
48 |
| -} |
49 |
| - |
50 | 45 | function install() {
|
51 |
| - const yarnWorkspacesStdout = execSync('yarn --json workspaces info', { |
52 |
| - cwd: reactNativeRootPath, |
53 |
| - encoding: 'utf8', |
54 |
| - }); |
55 |
| - const packages = JSON.parse(JSON.parse(yarnWorkspacesStdout).data); |
56 |
| - |
57 | 46 | const VERDACCIO_PID = setupVerdaccio(
|
58 | 47 | reactNativeRootPath,
|
59 | 48 | VERDACCIO_CONFIG_PATH,
|
60 | 49 | );
|
61 | 50 | process.stdout.write('Bootstrapped Verdaccio \u2705\n');
|
62 | 51 |
|
63 |
| - process.stdout.write('Starting to publish all the packages...\n'); |
64 |
| - Object.entries(packages).forEach(([packageName, packageEntity]) => { |
65 |
| - const packageRelativePath = packageEntity.location; |
66 |
| - const packageAbsolutePath = `${reactNativeRootPath}/${packageRelativePath}`; |
67 |
| - |
68 |
| - const packageManifest = readPackageJSON(packageAbsolutePath); |
69 |
| - if (packageManifest.private) { |
70 |
| - return; |
71 |
| - } |
72 |
| - |
73 |
| - execSync('npm publish --registry http://localhost:4873 --access public', { |
74 |
| - cwd: `${reactNativeRootPath}/${packageEntity.location}`, |
75 |
| - stdio: [process.stdin, process.stdout, process.stderr], |
76 |
| - }); |
| 52 | + process.stdout.write('Starting to publish every package...\n'); |
| 53 | + forEachPackage( |
| 54 | + (packageAbsolutePath, packageRelativePathFromRoot, packageManifest) => { |
| 55 | + if (packageManifest.private) { |
| 56 | + return; |
| 57 | + } |
| 58 | + |
| 59 | + execSync('npm publish --registry http://localhost:4873 --access public', { |
| 60 | + cwd: packageAbsolutePath, |
| 61 | + stdio: [process.stdin, process.stdout, process.stderr], |
| 62 | + }); |
| 63 | + |
| 64 | + process.stdout.write( |
| 65 | + `Published ${packageManifest.name} to proxy \u2705\n`, |
| 66 | + ); |
| 67 | + }, |
| 68 | + ); |
77 | 69 |
|
78 |
| - process.stdout.write(`Published ${packageName} to proxy \u2705\n`); |
79 |
| - }); |
80 |
| - process.stdout.write('Published all packages \u2705\n'); |
| 70 | + process.stdout.write('Published every package \u2705\n'); |
81 | 71 |
|
82 | 72 | execSync(
|
83 | 73 | `node cli.js init ${templateName} --directory ${directory} --template ${templateConfigPath} --verbose --skip-install`,
|
|
0 commit comments