diff --git a/package.json b/package.json index 9258d552e4..d2cf1bd74a 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "test:inspect": "node --inspect-brk ./node_modules/.bin/jest", "changeset": "changeset", "version": "changeset version", + "publish": "node scripts/publish.js", "postversion": "node scripts/postversion.mjs", "version:experimental": "node ./scripts/version experimental", "watch": "rollup -c -w" diff --git a/scripts/publish.js b/scripts/publish.js index 91c638cd8a..4b1f63850d 100644 --- a/scripts/publish.js +++ b/scripts/publish.js @@ -28,13 +28,7 @@ function getTaggedVersion() { * @param {string|number} version */ async function ensureBuildVersion(packageName, version) { - let file = path.join( - rootDir, - "build", - "node_modules", - packageName, - "package.json" - ); + let file = path.join(rootDir, "packages", packageName, "package.json"); let json = await jsonfile.readFile(file); invariant( json.version === version, @@ -47,7 +41,7 @@ async function ensureBuildVersion(packageName, version) { * @param {string} tag */ function publishBuild(packageName, tag) { - let buildDir = path.join(rootDir, "build", "node_modules", packageName); + let buildDir = path.join(rootDir, "packages", packageName); console.log(); console.log(` npm publish ${buildDir} --tag ${tag} --access public`); console.log(); @@ -75,25 +69,32 @@ async function run() { ); // 2. Determine the appropriate npm tag to use - let tag = semver.prerelease(version) == null ? "latest" : "next"; + let tag = version.includes("experimental") + ? "experimental" + : semver.prerelease(version) == null + ? "latest" + : "next"; console.log(); console.log(` Publishing version ${version} to npm with tag "${tag}"`); // 3. Ensure build versions match the release version + if (version.includes("experimental")) { + // FIXME: @remix-run/router is versioned differently and is only handled + // for experimental releases here + await ensureBuildVersion("router", version); + } await ensureBuildVersion("react-router", version); await ensureBuildVersion("react-router-dom", version); await ensureBuildVersion("react-router-dom-v5-compat", version); await ensureBuildVersion("react-router-native", version); - // FIXME: @remix-run/router is versioned differently and isn't being - // validated here // 4. Publish to npm + publishBuild("router", tag); publishBuild("react-router", tag); publishBuild("react-router-dom", tag); publishBuild("react-router-dom-v5-compat", tag); publishBuild("react-router-native", tag); - publishBuild("@remix-run/router", tag); } catch (error) { console.log(); console.error(` ${error.message}`);