From 9b59006ff69d9ec3c7b04b2fc341b3be1239342e Mon Sep 17 00:00:00 2001 From: Mikhail Osher Date: Tue, 24 Apr 2018 11:20:30 +0300 Subject: [PATCH 1/4] Support package distribution tags (#4348) --- packages/create-react-app/createReactApp.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/packages/create-react-app/createReactApp.js b/packages/create-react-app/createReactApp.js index cbe9699e2c3..a08b94b29ed 100755 --- a/packages/create-react-app/createReactApp.js +++ b/packages/create-react-app/createReactApp.js @@ -84,6 +84,7 @@ const program = new commander.Command(packageJson.name) ` A custom ${chalk.cyan('--scripts-version')} can be one of:` ); console.log(` - a specific npm version: ${chalk.green('0.8.2')}`); + console.log(` - a specific npm tag: ${chalk.green('@next')}`); console.log( ` - a custom fork published on npm: ${chalk.green( 'my-react-scripts' @@ -394,14 +395,18 @@ function getInstallPackage(version, originalDirectory) { const validSemver = semver.valid(version); if (validSemver) { packageToInstall += `@${validSemver}`; - } else if (version && version.match(/^file:/)) { - packageToInstall = `file:${path.resolve( - originalDirectory, - version.match(/^file:(.*)?$/)[1] - )}`; } else if (version) { - // for tar.gz or alternative paths - packageToInstall = version; + if (version[0] === '@') { + packageToInstall += `@${version.substring(1)}`; + } else if (version.match(/^file:/)) { + packageToInstall = `file:${path.resolve( + originalDirectory, + version.match(/^file:(.*)?$/)[1] + )}`; + } else if (version) { + // for tar.gz or alternative paths + packageToInstall = version; + } } return packageToInstall; } From 6f174f06e25f44f067292c7064082b4df8b55dab Mon Sep 17 00:00:00 2001 From: Mikhail Osher Date: Tue, 24 Apr 2018 11:36:12 +0300 Subject: [PATCH 2/4] Remove redundand variable check in `getInstallPackage` --- packages/create-react-app/createReactApp.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/create-react-app/createReactApp.js b/packages/create-react-app/createReactApp.js index a08b94b29ed..882546dffc8 100755 --- a/packages/create-react-app/createReactApp.js +++ b/packages/create-react-app/createReactApp.js @@ -403,7 +403,7 @@ function getInstallPackage(version, originalDirectory) { originalDirectory, version.match(/^file:(.*)?$/)[1] )}`; - } else if (version) { + } else { // for tar.gz or alternative paths packageToInstall = version; } From 1aa0675eb811e8ac9cafe4bff7bf4f7d2da87e24 Mon Sep 17 00:00:00 2001 From: Mikhail Osher Date: Tue, 24 Apr 2018 14:37:54 +0300 Subject: [PATCH 3/4] Simplify react-scripts version using `--scripts-version=@tagname` notation --- packages/create-react-app/createReactApp.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/create-react-app/createReactApp.js b/packages/create-react-app/createReactApp.js index 882546dffc8..957501c8e17 100755 --- a/packages/create-react-app/createReactApp.js +++ b/packages/create-react-app/createReactApp.js @@ -397,7 +397,7 @@ function getInstallPackage(version, originalDirectory) { packageToInstall += `@${validSemver}`; } else if (version) { if (version[0] === '@') { - packageToInstall += `@${version.substring(1)}`; + packageToInstall += version; } else if (version.match(/^file:/)) { packageToInstall = `file:${path.resolve( originalDirectory, From 928d70932d19ceb8b9211564f787a622815ac651 Mon Sep 17 00:00:00 2001 From: Mikhail Osher Date: Tue, 24 Apr 2018 18:24:19 +0300 Subject: [PATCH 4/4] Add dist-tag tests to e2e-installs --- tasks/e2e-installs.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tasks/e2e-installs.sh b/tasks/e2e-installs.sh index ed014c58f35..6caf114c572 100755 --- a/tasks/e2e-installs.sh +++ b/tasks/e2e-installs.sh @@ -101,6 +101,18 @@ npx npm-cli-login@0.0.10 -u user -p password -e user@example.com -r "$custom_reg git clean -df ./tasks/publish.sh --yes --force-publish=* --skip-git --cd-version=prerelease --exact --npm-tag=latest +# ****************************************************************************** +# Test --scripts-version with a distribution tag +# ****************************************************************************** + +cd "$temp_app_path" +npx create-react-app --scripts-version=@latest test-app-dist-tag +cd test-app-dist-tag + +# Check corresponding scripts version is installed. +exists node_modules/react-scripts +checkDependencies + # ****************************************************************************** # Test --scripts-version with a version number # ******************************************************************************