From bf16a90e9c30e27536e034f9f11990f4fa2d76d4 Mon Sep 17 00:00:00 2001 From: jamesgeorge007 Date: Wed, 19 Jun 2019 23:44:14 +0530 Subject: [PATCH 01/13] Minor refactor --- packages/cli/src/tools/packageManager.js | 50 ++++++++++++++---------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/packages/cli/src/tools/packageManager.js b/packages/cli/src/tools/packageManager.js index b42519b68..fb2e8fe0b 100644 --- a/packages/cli/src/tools/packageManager.js +++ b/packages/cli/src/tools/packageManager.js @@ -11,6 +11,31 @@ type Options = {| let projectDir; +const yarnConfig = { + 'dependencies': ['add'], + 'devDependencies': ['add', '-D'], + 'uninstallDependencies': ['remove'] +}; + +const npmConfig = { + 'dependencies': ['install', '--save', '--save-exact'], + 'devDependencies': ['install', '--save-dev', '--save-exact'], + 'uninstallDependencies': ['uninstall', '--save'] +}; + +function configurePackageManager( + pmIsYarn: boolean, + packageNames: Array, + options?: Options, args: string +) { + const pm = pmIsYarn ? 'yarn' : 'npm'; + const pmConfig = pm === 'npm' ? npmConfig : yarnConfig; + + let args = pmConfig[args]; + args.push(...packageNames); + return executeCommand(pm, args, options); +} + function executeCommand( command: string, args: Array, @@ -36,33 +61,18 @@ export function setProjectDir(dir: string) { } export function install(packageNames: Array, options?: Options) { - return shouldUseYarn(options) - ? executeCommand('yarn', ['add', ...packageNames], options) - : executeCommand( - 'npm', - ['install', ...packageNames, '--save', '--save-exact'], - options, - ); + configurePackageManager(shouldUseYarn(options), packageNames, options, 'dependencies'); } export function installDev(packageNames: Array, options?: Options) { - return shouldUseYarn(options) - ? executeCommand('yarn', ['add', '-D', ...packageNames], options) - : executeCommand( - 'npm', - ['install', ...packageNames, '--save-dev', '--save-exact'], - options, - ); + configurePackageManager(shouldUseYarn(options), packageNames, options, 'devDependencies'); } export function uninstall(packageNames: Array, options?: Options) { - return shouldUseYarn(options) - ? executeCommand('yarn', ['remove', ...packageNames], options) - : executeCommand('npm', ['uninstall', ...packageNames, '--save'], options); + configurePackageManager(shouldUseYarn(options), packageNames, options, 'uninstallDependencies'); } export function installAll(options?: Options) { - return shouldUseYarn(options) - ? executeCommand('yarn', ['install'], options) - : executeCommand('npm', ['install'], options); + const pm = shouldUseYarn(options) ? 'yarn': 'npm'; + return executeCommand(pm, ['install'], options); } From f0bdd24ed0b0a77e85adb4ab8ed21f85a936bf94 Mon Sep 17 00:00:00 2001 From: jamesgeorge007 Date: Wed, 19 Jun 2019 23:50:52 +0530 Subject: [PATCH 02/13] Fix --- packages/cli/src/tools/packageManager.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/cli/src/tools/packageManager.js b/packages/cli/src/tools/packageManager.js index fb2e8fe0b..8ab5cbb82 100644 --- a/packages/cli/src/tools/packageManager.js +++ b/packages/cli/src/tools/packageManager.js @@ -26,12 +26,12 @@ const npmConfig = { function configurePackageManager( pmIsYarn: boolean, packageNames: Array, - options?: Options, args: string + options?: Options, installType: string ) { const pm = pmIsYarn ? 'yarn' : 'npm'; const pmConfig = pm === 'npm' ? npmConfig : yarnConfig; - let args = pmConfig[args]; + let args = pmConfig[installType]; args.push(...packageNames); return executeCommand(pm, args, options); } From 60b43c93066db4d689578b403ba22953659f92b3 Mon Sep 17 00:00:00 2001 From: jamesgeorge007 Date: Wed, 19 Jun 2019 23:53:22 +0530 Subject: [PATCH 03/13] Linting fix --- packages/cli/src/tools/packageManager.js | 42 ++++++++++++++++-------- 1 file changed, 29 insertions(+), 13 deletions(-) diff --git a/packages/cli/src/tools/packageManager.js b/packages/cli/src/tools/packageManager.js index 8ab5cbb82..b1c5b8774 100644 --- a/packages/cli/src/tools/packageManager.js +++ b/packages/cli/src/tools/packageManager.js @@ -12,21 +12,22 @@ type Options = {| let projectDir; const yarnConfig = { - 'dependencies': ['add'], - 'devDependencies': ['add', '-D'], - 'uninstallDependencies': ['remove'] + dependencies: ['add'], + devDependencies: ['add', '-D'], + uninstallDependencies: ['remove'], }; const npmConfig = { - 'dependencies': ['install', '--save', '--save-exact'], - 'devDependencies': ['install', '--save-dev', '--save-exact'], - 'uninstallDependencies': ['uninstall', '--save'] + dependencies: ['install', '--save', '--save-exact'], + devDependencies: ['install', '--save-dev', '--save-exact'], + uninstallDependencies: ['uninstall', '--save'], }; function configurePackageManager( - pmIsYarn: boolean, - packageNames: Array, - options?: Options, installType: string + pmIsYarn: boolean, + packageNames: Array, + options?: Options, + installType: string, ) { const pm = pmIsYarn ? 'yarn' : 'npm'; const pmConfig = pm === 'npm' ? npmConfig : yarnConfig; @@ -61,18 +62,33 @@ export function setProjectDir(dir: string) { } export function install(packageNames: Array, options?: Options) { - configurePackageManager(shouldUseYarn(options), packageNames, options, 'dependencies'); + configurePackageManager( + shouldUseYarn(options), + packageNames, + options, + 'dependencies', + ); } export function installDev(packageNames: Array, options?: Options) { - configurePackageManager(shouldUseYarn(options), packageNames, options, 'devDependencies'); + configurePackageManager( + shouldUseYarn(options), + packageNames, + options, + 'devDependencies', + ); } export function uninstall(packageNames: Array, options?: Options) { - configurePackageManager(shouldUseYarn(options), packageNames, options, 'uninstallDependencies'); + configurePackageManager( + shouldUseYarn(options), + packageNames, + options, + 'uninstallDependencies', + ); } export function installAll(options?: Options) { - const pm = shouldUseYarn(options) ? 'yarn': 'npm'; + const pm = shouldUseYarn(options) ? 'yarn' : 'npm'; return executeCommand(pm, ['install'], options); } From ad63ffc6dc0ac840a35b69a71e7c7e6a765defd0 Mon Sep 17 00:00:00 2001 From: jamesgeorge007 Date: Thu, 20 Jun 2019 17:00:40 +0530 Subject: [PATCH 04/13] refactor --- package.json | 1 + packages/cli/src/tools/packageManager.js | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 11aa5ef77..d731ffe7b 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "@react-native-community/eslint-config": "^0.0.5", "@types/jest": "^24.0.11", "@types/node": "^11.13.0", + "@types/node-fetch": "^2.3.7", "babel-jest": "^24.6.0", "babel-plugin-module-resolver": "^3.2.0", "chalk": "^2.4.2", diff --git a/packages/cli/src/tools/packageManager.js b/packages/cli/src/tools/packageManager.js index b1c5b8774..a3e4478e2 100644 --- a/packages/cli/src/tools/packageManager.js +++ b/packages/cli/src/tools/packageManager.js @@ -32,8 +32,8 @@ function configurePackageManager( const pm = pmIsYarn ? 'yarn' : 'npm'; const pmConfig = pm === 'npm' ? npmConfig : yarnConfig; - let args = pmConfig[installType]; - args.push(...packageNames); + const [executable, flags] = pmConfig[installType]; + const args = [executable, ...packageNames, ...flags]; return executeCommand(pm, args, options); } From 3cce64be088384b6dd7ecde6403e55e439b37c20 Mon Sep 17 00:00:00 2001 From: jamesgeorge007 Date: Thu, 20 Jun 2019 17:14:24 +0530 Subject: [PATCH 05/13] lock file --- yarn.lock | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/yarn.lock b/yarn.lock index 52747b228..9bdd5834c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1975,6 +1975,13 @@ dependencies: "@types/node" "*" +"@types/node-fetch@^2.3.7": + version "2.3.7" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.3.7.tgz#b7212e895100f8642dbdab698472bab5f3c1d2f1" + integrity sha512-+bKtuxhj/TYSSP1r4CZhfmyA0vm/aDRQNo7vbAgf6/cZajn0SAniGGST07yvI4Q+q169WTa2/x9gEHfJrkcALw== + dependencies: + "@types/node" "*" + "@types/node@*": version "12.0.0" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.0.0.tgz#d11813b9c0ff8aaca29f04cbc12817f4c7d656e5" From d69554a932958bd6e7d2ff142706566ab6925d66 Mon Sep 17 00:00:00 2001 From: jamesgeorge007 Date: Thu, 20 Jun 2019 17:40:52 +0530 Subject: [PATCH 06/13] Fix --- packages/cli/src/tools/packageManager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/src/tools/packageManager.js b/packages/cli/src/tools/packageManager.js index a3e4478e2..cff95840d 100644 --- a/packages/cli/src/tools/packageManager.js +++ b/packages/cli/src/tools/packageManager.js @@ -32,7 +32,7 @@ function configurePackageManager( const pm = pmIsYarn ? 'yarn' : 'npm'; const pmConfig = pm === 'npm' ? npmConfig : yarnConfig; - const [executable, flags] = pmConfig[installType]; + const [executable, ...flags] = pmConfig[installType]; const args = [executable, ...packageNames, ...flags]; return executeCommand(pm, args, options); } From 642cc03b7e1d924a97534c443f63fe24de5e65d6 Mon Sep 17 00:00:00 2001 From: James George Date: Fri, 21 Jun 2019 13:27:11 +0530 Subject: [PATCH 07/13] Minor fix append return to method call --- packages/cli/src/tools/packageManager.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/cli/src/tools/packageManager.js b/packages/cli/src/tools/packageManager.js index cff95840d..82bffa034 100644 --- a/packages/cli/src/tools/packageManager.js +++ b/packages/cli/src/tools/packageManager.js @@ -62,7 +62,7 @@ export function setProjectDir(dir: string) { } export function install(packageNames: Array, options?: Options) { - configurePackageManager( + return configurePackageManager( shouldUseYarn(options), packageNames, options, @@ -71,7 +71,7 @@ export function install(packageNames: Array, options?: Options) { } export function installDev(packageNames: Array, options?: Options) { - configurePackageManager( + return configurePackageManager( shouldUseYarn(options), packageNames, options, @@ -80,7 +80,7 @@ export function installDev(packageNames: Array, options?: Options) { } export function uninstall(packageNames: Array, options?: Options) { - configurePackageManager( + return configurePackageManager( shouldUseYarn(options), packageNames, options, From 3e8839e6e8cf097a5f374265e8b62e12ba783548 Mon Sep 17 00:00:00 2001 From: jamesgeorge007 Date: Fri, 21 Jun 2019 19:53:28 +0530 Subject: [PATCH 08/13] Refactor --- packages/cli/src/tools/packageManager.js | 56 +++++++++--------------- 1 file changed, 21 insertions(+), 35 deletions(-) diff --git a/packages/cli/src/tools/packageManager.js b/packages/cli/src/tools/packageManager.js index 82bffa034..1b8a1bfd5 100644 --- a/packages/cli/src/tools/packageManager.js +++ b/packages/cli/src/tools/packageManager.js @@ -11,28 +11,30 @@ type Options = {| let projectDir; -const yarnConfig = { - dependencies: ['add'], - devDependencies: ['add', '-D'], - uninstallDependencies: ['remove'], -}; - -const npmConfig = { - dependencies: ['install', '--save', '--save-exact'], - devDependencies: ['install', '--save-dev', '--save-exact'], - uninstallDependencies: ['uninstall', '--save'], +const packageManagers = { + yarn: { + add: ['add'], + addDev: ['add', '-D'], + remove: ['remove'], + install: ['install'], + }, + npm: { + add: ['install', '--save', '--save-exact'], + addDev: ['install', '--save-dev', '--save-exact'], + remove: ['uninstall', '--save'], + install: ['install'], + }, }; function configurePackageManager( - pmIsYarn: boolean, packageNames: Array, options?: Options, - installType: string, + action: 'add' | 'addDev' | 'remove', ) { - const pm = pmIsYarn ? 'yarn' : 'npm'; - const pmConfig = pm === 'npm' ? npmConfig : yarnConfig; + const pm = shouldUseYarn(options) ? 'yarn' : 'npm'; + const pmConfig = packageManagers[pm]; - const [executable, ...flags] = pmConfig[installType]; + const [executable, ...flags] = pmConfig[action]; const args = [executable, ...packageNames, ...flags]; return executeCommand(pm, args, options); } @@ -62,33 +64,17 @@ export function setProjectDir(dir: string) { } export function install(packageNames: Array, options?: Options) { - return configurePackageManager( - shouldUseYarn(options), - packageNames, - options, - 'dependencies', - ); + return configurePackageManager(packageNames, options, 'add'); } export function installDev(packageNames: Array, options?: Options) { - return configurePackageManager( - shouldUseYarn(options), - packageNames, - options, - 'devDependencies', - ); + return configurePackageManager(packageNames, options, 'addDev'); } export function uninstall(packageNames: Array, options?: Options) { - return configurePackageManager( - shouldUseYarn(options), - packageNames, - options, - 'uninstallDependencies', - ); + return configurePackageManager(packageNames, options, 'remove'); } export function installAll(options?: Options) { - const pm = shouldUseYarn(options) ? 'yarn' : 'npm'; - return executeCommand(pm, ['install'], options); + return configurePackageManager(options, 'install'); } From a9ecef249456e94d9137ae16bea18e0e229c6b41 Mon Sep 17 00:00:00 2001 From: jamesgeorge007 Date: Fri, 21 Jun 2019 21:34:57 +0530 Subject: [PATCH 09/13] Minor refactor --- packages/cli/src/tools/packageManager.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/cli/src/tools/packageManager.js b/packages/cli/src/tools/packageManager.js index 1b8a1bfd5..a209dda9c 100644 --- a/packages/cli/src/tools/packageManager.js +++ b/packages/cli/src/tools/packageManager.js @@ -76,5 +76,8 @@ export function uninstall(packageNames: Array, options?: Options) { } export function installAll(options?: Options) { - return configurePackageManager(options, 'install'); + const pm = shouldUseYarn(options) ? 'yarn' : 'npm'; + const pmConfig = packageManagers[pm]; + + return executeCommand(pm, pmConfig.install, options); } From 4b15039e894789978f2e74614e06e95915d351dd Mon Sep 17 00:00:00 2001 From: jamesgeorge007 Date: Fri, 21 Jun 2019 22:27:22 +0530 Subject: [PATCH 10/13] Minor fix change order of args --- packages/cli/src/tools/packageManager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/src/tools/packageManager.js b/packages/cli/src/tools/packageManager.js index a209dda9c..0cb411f39 100644 --- a/packages/cli/src/tools/packageManager.js +++ b/packages/cli/src/tools/packageManager.js @@ -35,7 +35,7 @@ function configurePackageManager( const pmConfig = packageManagers[pm]; const [executable, ...flags] = pmConfig[action]; - const args = [executable, ...packageNames, ...flags]; + const args = [executable, ...flags, ...packageNames]; return executeCommand(pm, args, options); } From 4619b0907c37b42e62826da6a7ddb0ae0196609a Mon Sep 17 00:00:00 2001 From: jamesgeorge007 Date: Fri, 21 Jun 2019 23:08:01 +0530 Subject: [PATCH 11/13] Fixup tests --- package.json | 2 +- .../cli/src/tools/__tests__/packageManager-test.js | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index d731ffe7b..cd80e8a38 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "test": "jest", "test:ci:unit": "jest packages --ci --coverage", "test:ci:e2e": "jest e2e --ci -i", - "lint": "eslint --ext .js,.ts . --cache --report-unused-disable-directives", + "lint": "eslint --fix --ext .js,.ts . --cache --report-unused-disable-directives", "test:ci:cocoapods": "ruby packages/platform-ios/native_modules.rb", "flow-check": "flow check", "postinstall": "yarn build", diff --git a/packages/cli/src/tools/__tests__/packageManager-test.js b/packages/cli/src/tools/__tests__/packageManager-test.js index 1e53b185f..4527091b5 100644 --- a/packages/cli/src/tools/__tests__/packageManager-test.js +++ b/packages/cli/src/tools/__tests__/packageManager-test.js @@ -55,7 +55,7 @@ describe('npm', () => { expect(execa).toHaveBeenCalledWith( 'npm', - ['install', ...PACKAGES, '--save', '--save-exact'], + ['install', '--save', '--save-exact', ...PACKAGES], EXEC_OPTS, ); }); @@ -65,7 +65,7 @@ describe('npm', () => { expect(execa).toHaveBeenCalledWith( 'npm', - ['install', ...PACKAGES, '--save-dev', '--save-exact'], + ['install', '--save-dev', '--save-exact', ...PACKAGES], EXEC_OPTS, ); }); @@ -75,7 +75,7 @@ describe('npm', () => { expect(execa).toHaveBeenCalledWith( 'npm', - ['uninstall', ...PACKAGES, '--save'], + ['uninstall', '--save', ...PACKAGES], EXEC_OPTS, ); }); @@ -87,7 +87,7 @@ it('should use npm if yarn is not available', () => { expect(execa).toHaveBeenCalledWith( 'npm', - ['install', ...PACKAGES, '--save', '--save-exact'], + ['install', '--save', '--save-exact', ...PACKAGES], EXEC_OPTS, ); }); @@ -100,7 +100,7 @@ it('should use npm if project is not using yarn', () => { expect(execa).toHaveBeenCalledWith( 'npm', - ['install', ...PACKAGES, '--save', '--save-exact'], + ['install', '--save', '--save-exact', ...PACKAGES], EXEC_OPTS, ); expect(yarn.isProjectUsingYarn).toHaveBeenCalledWith(PROJECT_ROOT); From 9e148a701c57861a81f1613c9f8fbb26c065a37c Mon Sep 17 00:00:00 2001 From: jamesgeorge007 Date: Fri, 21 Jun 2019 23:39:14 +0530 Subject: [PATCH 12/13] revert remove --fix flag for eslint --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index cd80e8a38..d731ffe7b 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "test": "jest", "test:ci:unit": "jest packages --ci --coverage", "test:ci:e2e": "jest e2e --ci -i", - "lint": "eslint --fix --ext .js,.ts . --cache --report-unused-disable-directives", + "lint": "eslint --ext .js,.ts . --cache --report-unused-disable-directives", "test:ci:cocoapods": "ruby packages/platform-ios/native_modules.rb", "flow-check": "flow check", "postinstall": "yarn build", From 9883c46e8c36ff5474610a95b9dabb1f63bb0078 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Pierzcha=C5=82a?= Date: Fri, 21 Jun 2019 20:16:27 +0200 Subject: [PATCH 13/13] use more unified action names --- packages/cli/src/tools/packageManager.js | 33 ++++++++++-------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/packages/cli/src/tools/packageManager.js b/packages/cli/src/tools/packageManager.js index 0cb411f39..b85e8c293 100644 --- a/packages/cli/src/tools/packageManager.js +++ b/packages/cli/src/tools/packageManager.js @@ -13,28 +13,26 @@ let projectDir; const packageManagers = { yarn: { - add: ['add'], - addDev: ['add', '-D'], - remove: ['remove'], - install: ['install'], + install: ['add'], + installDev: ['add', '-D'], + uninstall: ['remove'], + installAll: ['install'], }, npm: { - add: ['install', '--save', '--save-exact'], - addDev: ['install', '--save-dev', '--save-exact'], - remove: ['uninstall', '--save'], - install: ['install'], + install: ['install', '--save', '--save-exact'], + installDev: ['install', '--save-dev', '--save-exact'], + uninstall: ['uninstall', '--save'], + installAll: ['install'], }, }; function configurePackageManager( packageNames: Array, options?: Options, - action: 'add' | 'addDev' | 'remove', + action: 'install' | 'installDev' | 'installAll' | 'uninstall', ) { const pm = shouldUseYarn(options) ? 'yarn' : 'npm'; - const pmConfig = packageManagers[pm]; - - const [executable, ...flags] = pmConfig[action]; + const [executable, ...flags] = packageManagers[pm][action]; const args = [executable, ...flags, ...packageNames]; return executeCommand(pm, args, options); } @@ -64,20 +62,17 @@ export function setProjectDir(dir: string) { } export function install(packageNames: Array, options?: Options) { - return configurePackageManager(packageNames, options, 'add'); + return configurePackageManager(packageNames, options, 'install'); } export function installDev(packageNames: Array, options?: Options) { - return configurePackageManager(packageNames, options, 'addDev'); + return configurePackageManager(packageNames, options, 'installDev'); } export function uninstall(packageNames: Array, options?: Options) { - return configurePackageManager(packageNames, options, 'remove'); + return configurePackageManager(packageNames, options, 'uninstall'); } export function installAll(options?: Options) { - const pm = shouldUseYarn(options) ? 'yarn' : 'npm'; - const pmConfig = packageManagers[pm]; - - return executeCommand(pm, pmConfig.install, options); + return configurePackageManager([], options, 'installAll'); }